본문 바로가기

Django 게시판 만들기 (5) - 회원가입 구현 본문

Programming/django

Django 게시판 만들기 (5) - 회원가입 구현

ksoes 2022. 4. 5. 21:56

 

 

  • 회원가입 템플릿 생성
    •  base.html에서 navbar 회원가입 링크 수정
      • 더보기
        <a class="nav-link" href="{% url 'accounts:signup' %}">회원가입</a>
    • signup.html 작성
      • 더보기
        {% extends "base.html" %}
        {% block content %}
        <div class="container my-3 ">
            <form method="post" action="{% url 'accounts:signup' %}">
                {% csrf_token %}
                {% include "form_errors.html" %}
                <div class="wrapper " >
                    <h1 class="text-center">회원가입</h1>
                    <form method="POST">
                        {% csrf_token %}
                        아이디
                        <input name="username" type="text" class="form-control my-3 ">
                        <br>
                        비밀번호
                        <input name="password1" type="password" class="form-control my-3">
                        <br>
                        비밀번호 확인
                        <input name="password2" type="password" class="form-control my-3">
                        <br>
                        이메일
                        <input name="email" type="email" class="form-control my-3">
        
                        <button type="submit" class="btn btn-primary my-3">회원가입</button>
                    </form>
                </div>
            </form>
        </div>
        {% endblock %}
    • accounts/urls.py에 url 매핑 작성
      • 더보기
        path('signup/', views.signup, name='signup'),
    • accounts/views.py에 signup 함수 작성
      • 더보기
        from django.shortcuts import render, redirect
        from django.contrib.auth import authenticate, login
        from django.contrib.auth.models import User
        from django.contrib import auth
        
        # Create your views here.
        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'],
                        email=request.POST['email'],
                    )
                    user = authenticate(username=user.username, password=user.password) # 사용자 인증
                    login(request, user)
                    return redirect('/')
                return render(request, 'accounts/signup.html')
            return render(request, 'accounts/signup.html')
  • 로그인 시 navbar 바뀌도록 수정
    • 더보기
      {% if user.is_authenticated %}
      <a class="navbar-brand" href="{% url 'board:index' %}">감정통</a>
      <span id="user_name" class="text-white">{{ user.username }}님 환영합니다! </span>
      {% else %}
      <a class="navbar-brand" href="{% url 'board:index' %}">감정통 </a>
      {% endif %}
      
      <li class="nav-item ">
      	{% if user.is_authenticated %}
      	<a class="nav-link" href="{% url 'accounts:logout' %}">로그아웃</a>
      	{% else %}
      	<a class="nav-link" href="{% url 'accounts:login' %}">로그인</a>
      	<li class="nav-item ">
      		<a class="nav-link" href="{% url 'accounts:signup' %}">회원가입</a>
      	</li>
      	{% endif %}
      </li>
  • 글쓰기, 수정, 삭제 할 때 로그인 필수로 수정 - 데코레이터 이용
    • 더보기
      from django.contrib.auth.decorators import login_required
      
      @login_required(login_url='/accounts/login/')
      def my_view(request):

 

 

회원가입 기능은 작성했지만 비밀번호를 다르게 입력할 시 메세지처리가 안되었고, post모델에 자겅자도 외래키로  추가하는 방법을 알아보자.

네비게이션 바에서 로그인/로그아웃/회원가입/마이페이지를 전체화면 시 우측정렬로 수정을 해보고 싶다. 

Comments