| 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.shortcuts import render, redirect#탬플릿으로 넘기기 위해
| |
| − | from membership.forms import UserForm#폼 소환~
| |
| − |
| |
| | 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('account:main') # 회원가입 후 어디로 돌릴지. 보고 있던 페이지로는 안되나;;? |
| | else: | | else: |
| − | form = UserForm() | + | form = User_create_form() |
| − | return render(request, 'membership/signup.html', {'form': form}) | + | return render(request, '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번째 줄: |
54번째 줄: |
| | </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번째 줄: |
63번째 줄: |
| | {% 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번째 줄: |
77번째 줄: |
| | 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> |