맨들맨들 돌덩이
Home
  • 분류 전체보기 (439)
    • 프로젝트 (14)
    • NOTICE (2)
    • 개발 (206)
      • Unity (12)
      • JAVA (20)
      • SPRING (9)
      • DB (10)
      • FronT (14)
      • 알고리즘 (16)
      • 이코테 (25)
      • Python (60)
      • Arduino (4)
      • WEB (18)
      • C++ (17)
    • 게임 (33)
      • DNF (31)
      • LostArk (2)
    • KT_DS (93)
      • 보호관리용 (3)
    • 실습코드 (64)
      • 실습 코드 (63)
    • 독서 (2)
      • 생각넓히기 (2)
    • Setting (17)
    • 일상 (8)
ALL
  • 분류 전체보기 (439)
    • 프로젝트 (14)
    • NOTICE (2)
    • 개발 (206)
      • Unity (12)
      • JAVA (20)
      • SPRING (9)
      • DB (10)
      • FronT (14)
      • 알고리즘 (16)
      • 이코테 (25)
      • Python (60)
      • Arduino (4)
      • WEB (18)
      • C++ (17)
    • 게임 (33)
      • DNF (31)
      • LostArk (2)
    • KT_DS (93)
      • 보호관리용 (3)
    • 실습코드 (64)
      • 실습 코드 (63)
    • 독서 (2)
      • 생각넓히기 (2)
    • Setting (17)
    • 일상 (8)
블로그 내 검색

맨들맨들 돌덩이

티스토리 생일 : 2020.11.18. 모든 문의 : highcw@naver.com

  • 개발/Python

    Python with Django_ 장고 게시판노트 앱 만들기 (6) 회원가입

    2021. 11. 16.

    by. KAEY

     

    Python with Django_ 장고 게시판노트 앱 만들기 (1) :: 절실성실 (tistory.com)

     

    Python with Django_ 장고 게시판노트 앱 만들기 (2) :: 절실성실 (tistory.com)

     

    Python with Django_ 장고 게시판노트 앱 만들기 (3) 부트스트랩 적용 :: MS (tistory.com)

     

    Python with Django_ 장고 게시판노트 앱 만들기 (4) 게시글 등록 :: MS (tistory.com)

     

    Python with Django_ 장고 게시판노트 앱 만들기 (5) 로그인 로그아웃 :: MS (tistory.com)

     

    에서 이어지는 글 입니다.

     


    회원가입

    회원가입 기능 추가 

    Django.contrib.auth 앱을 이용하여 구현한다.

     

    common/forms.py

    from django import forms
    from django.contrib.auth.forms import UserCreationForm
    from django.contrib.auth.models import User
    
    class UserForm(UserCreationForm):
        email = forms.EmailField(label="이메일")
        
        class Meta:
            model = User
            fields = ("username", "email")

    UserCreationForm 은 기본적으로 username, password1, password2를 가지고 있고, email속성을 추가하기 위해 UserCreationForm을 상속받는 UserForm을 생성한다.

     

     

     

    common/views.py

    from django.contrib.auth import authenticate, login
    from django.shortcuts import render, redirect
    
    from .forms import UserForm
    
    def signup(request):
        if request.method == "POST":
            form = UserForm(request.POST)
            if form.is_valid():
                form.save()
                username = form.cleaned_data.get('username')
                raw_password = form.cleaned_data.get('password1')
                user = authenticate(username=username, password=raw_password)
                login(request, user)
            return redirect('index')
        else:
        	form = UserForm()
        return render(request, 'common/signup.html', {'form': form})

    회원가입 완료된 후 자동 로그인이 가능하도록 authenticate와 login 함수를 사용한다.

     

     

     

    templates/common/signup.html

    ...
        <form method="post" class="post-form">
            {% csrf_token %}
            {% include "form_errors.html" %}
            <div class="form-group">
                <label for="username">사용자 이름</label>
                <input type="text" class="form-control" name="username" id="username"
                       value="{{ form.username.value|default_if_none:''  }}">
            </div>
              ...
            <button type="submit" class="btn btn-primary">생성하기</button>
    ...

    하나하나를 form-group으로 묶어서 <div>로 묶어준다.

     

     

     

    회원가입 링크 추가

      templates/common/login.html

    …
        <div class="row">
            <div class="col-4">
            	<h4>로그인</h4>
            </div>
            <div class="col-8 text-right">
            	<span>또는 <a href="{% url 'common:signup' %}">계정을 만드세요.</a></span>
            </div>
        </div>
    …

     

     

     

    common/urls.py

    …
    urlpatterns = [
        path('login/', auth_views.LoginView.as_view(template_name='common/login.html'), name='login'),
        path('logout/', auth_views.LogoutView.as_view(), name='logout'),
        path('signup/', views.signup, name='signup'),
    ]

     

    검은색 박스 처리는 그냥 그림판으로 보기 좋으라고 해놨습니다.

    admin 페이지로 접속하면 확인도 가능하다.

     

     


    저작자표시 비영리 동일조건 (새창열림)

    '개발 > Python' 카테고리의 다른 글

    Python with Django_ 장고 Paginator 클래스  (0) 2021.11.16
    Python with Django_ 장고 게시판노트 앱 만들기 (7) 네비게이션 바  (0) 2021.11.16
    Python with Django_ 장고 게시판노트 앱 만들기 (5) 로그인 로그아웃  (0) 2021.11.15
    Python with Django_ 장고 게시판노트 앱 만들기 (4) 게시글 등록  (0) 2021.11.15
    Python with Django_ 장고 게시판노트 앱 만들기 (3) 부트스트랩 적용  (0) 2021.11.15

    댓글 (비로그인 댓글 허용하지 않습니다.)

    관련글

    • Python with Django_ 장고 Paginator 클래스 2021.11.16
    • Python with Django_ 장고 게시판노트 앱 만들기 (7) 네비게이션 바 2021.11.16
    • Python with Django_ 장고 게시판노트 앱 만들기 (5) 로그인 로그아웃 2021.11.15
    • Python with Django_ 장고 게시판노트 앱 만들기 (4) 게시글 등록 2021.11.15
    맨 위로
전체 글 보기
Tistory 로그인
Tistory 로그아웃
로그아웃 글쓰기 관리

Today

Total

Powered by ⓒ Kakao Corp.

Designed by Nana
블로그 이미지
KAEY
#모바일 접속 차단. (PC 환경 자동 리다이렉트) #현재 블로그내 모든 광고는 티스토리(카카오)에서 게시한 광고입니다😢. #문의 이메일 : highcw@naver.com

티스토리툴바