일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 파이썬 알고리즘
- js
- 알고리즘
- 알고리즘 연습
- es6
- django rest framework
- django ORM
- web
- java
- react
- Baekjoon
- MAC
- 알고리즘 문제
- 알고리즘 풀이
- 백준
- API
- CSS
- PYTHON
- 장고
- form
- django widget
- HTML
- Algorithm
- Django
- c++
- Git
- DRF
- AWS
- javascript
- 파이썬
Archives
- Today
- Total
수학과의 좌충우돌 프로그래밍
[Django] OneToOne 방법으로 User Model 확장 본문
OneToOne 사용하여 User Model 추가하기
저번에 장고에서 제공해주는 User Model을 사용하여 로그인 및 로그아웃, 회원가입을 구현하였습니다.
장고에서 제공해주는 기본 모델은 부족한 점이 많아보입니다. 우리가 원하는 필드들이 모두 존재하는 것이 아니었기 때문에 이를 업그레이드 시켜보도록 하겠습니다.여러 가지 방법이 있겠지만 그 중에서 가장 직관적이고 쉬운 방법을 택해보았습니다. 그 방법은 새로운 Model을 만들어서 기존의 User Model과 OneToOne 으로 연결하는 방식입니다. 그리고 내가 만든 Model에 새로운 필드를 추가해주는 방법으로 진행했습니다.
# models.py
from django.db import models
from django.contrib.auth.models import User
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
nickname = models.TextField(max_length=10)
위에서 User
를 import 하고 Profile 이라는 Model 을 만들어 주었습니다. 그 후 연결을 시켜주고 새로운 필드 nickname을 추가하였습니다.
따라서 회원가입 시, 기존에 입력하던 id, password 정보 외에도 nickname 정보를 입력받아 저장해주었습니다.
# views.py
def signup(request):
if request.method == "POST":
if request.POST["password1"] == request.POST["password2"]:
user = User.objects.create_user(
username=request.POST["username"],
password=request.POST["password1"])
nickname = request.POST["nickname"]
profile = Profile(user=user, nickname=nickname)
profile.save()
auth.login(request,user)
return redirect('account:home')
return render(request, 'account/signup.html')
그리고 User
Model 은 templates
에 기본적으로 존재하기 때문에 view 에서 굳이 뿌려주지 않아도 쉽게 접근이 가능합니다.
<!-- home.html -->
{{ user.profile.nickname }} 님 반갑습니다.
.
을 통해 연결해 nickname 까지 접근할 수 있었습니다.
'웹프로그래밍 > Django' 카테고리의 다른 글
[Django]로그인 유지하기, 쿠키와 세션 (4) | 2019.05.09 |
---|---|
[Django]User 비밀번호 변경하기, check_password (0) | 2019.05.04 |
[Django] 효율적인 url 관리 (2) (0) | 2019.05.04 |
[Django] 기본세팅하기 (0) | 2019.05.01 |
[Django]투표 기능 구현하기 (0) | 2019.04.06 |
Comments