22번째 줄:
22번째 줄:
class User_create_form(UserCreationForm):
class User_create_form(UserCreationForm):
class Meta:
class Meta:
−
model = get_user_model # 설정된 커스텀모델
+
model = get_user_model() # 설정된 커스텀모델
−
fields = ["username","password1", "password2","email"] # 모델의 어떤 부분을 기입할지
+
fields = ["identifier",] # password1,2 필드는 자동추가된다.
</syntaxhighlight>위에서 지정해주지 않은 fields가 폼에 적용되는데, 이 폼에 대한 공부가 따로 필요할 듯하다.
</syntaxhighlight>위에서 지정해주지 않은 fields가 폼에 적용되는데, 이 폼에 대한 공부가 따로 필요할 듯하다.
29번째 줄:
29번째 줄:
===view 작성===
===view 작성===
<syntaxhighlight lang="python">
<syntaxhighlight lang="python">
−
from django.contrib.auth import authenticate, login#로그인기능을 위해
+
from django.contrib.auth import authenticate, login
−
from django.shortcuts import render, redirect#탬플릿으로 넘기기 위해
+
from django.shortcuts import render, redirect
−
from membership.forms import UserForm#폼 소환~
+
from .forms import User_create_form
def signup(request):
def signup(request):
−
#글쓰기 view와 같이 입력과 보내기를 한 링크에서 관리한다.
if request.method == "POST":
if request.method == "POST":
−
form = UserForm(request.POST)
+
form = User_create_form(request.POST)
if form.is_valid():
if form.is_valid():
−
form.save()#폼값을 불러오는 역할
+
form.save() # 폼값을 불러와 저장.(회원객체가 생긴다.)
−
username = form.cleaned_data.get('username')
+
username = form.cleaned_data.get('identifier')
raw_password = form.cleaned_data.get('password1')
raw_password = form.cleaned_data.get('password1')
user = authenticate(username=username, password=raw_password)
user = authenticate(username=username, password=raw_password)
login(request, user)
login(request, user)
−
return redirect('index')#회원가입 후 어디로 돌릴지. 보고 있던 페이지로는 안되나;;?
+
return redirect('main') # 회원가입 후 어디로 돌릴지.
else:
else:
−
form = UserForm()
+
form = User_create_form()
−
return render(request, 'membership/signup.html', {'form': form})
+
return render(request, 'custum_account/signup.html', {'form': form})
</syntaxhighlight>한꺼번에 form을 저장하는 게 아니라 굳이 개별값을 얻고 싶을 땐 <code>form.cleaned_data.get('속성')</code>을 이용한다. 속성엔 탬플릿 해당 폼의 name에 담긴 것을 쓰면 된다.
</syntaxhighlight>한꺼번에 form을 저장하는 게 아니라 굳이 개별값을 얻고 싶을 땐 <code>form.cleaned_data.get('속성')</code>을 이용한다. 속성엔 탬플릿 해당 폼의 name에 담긴 것을 쓰면 된다.
===template 작성===
===template 작성===
−
<syntaxhighlight lang="html+django">
+
identifier 대신 식별자로 사용할 필드명을 넣으면 된다.<syntaxhighlight lang="html+django">
−
{% extends "common.html" %}
+
{% extends "base.html" %}
{% block content %}
{% block content %}
59번째 줄:
58번째 줄:
</div>
</div>
<div class="col-8">
<div class="col-8">
−
<span>또는 <a href="{% url 'membership:login' %}">로그인 하세요.</a></span>
+
<span>또는 <a href="{% url 'account:login' %}">로그인 하세요.</a></span>
</div>
</div>
68번째 줄:
67번째 줄:
{% include "form_errors.html" %}
{% include "form_errors.html" %}
<div class="form-group">
<div class="form-group">
−
<label for="username">사용자 이름</label>
+
<label for="identifier">사용자 이름</label>
−
<input type="text" class="form-control" name="username" id="username"
+
<input type="text" class="form-control" name="identifier" id="identifier"
−
value="{{ form.username.value|default_if_none:'' }}">
+
value="{{ form.identifier.value|default_if_none:'' }}">
</div>
</div>
<div class="form-group">
<div class="form-group">
82번째 줄:
81번째 줄:
value="{{ form.password2.value|default_if_none:'' }}">
value="{{ form.password2.value|default_if_none:'' }}">
</div>
</div>
−
<div class="form-group">
+
−
<label for="email">이메일</label>
+
<button type="submit" class="btn btn-primary">가입하기</button>
−
<input type="text" class="form-control" name="email" id="email"
−
value="{{ form.email.value|default_if_none:'' }}">
−
</div>
−
<button type="submit" class="btn btn-primary">생성하기</button>
</form>
</form>
</div>
</div>