[점프 투 장고] 3-06 회원가입에서 문제를 겪고있습니다.

![Imgur

비밀번호 와 비밀번호확인을 포함한 모든항목을 작성하여도

비밀번호
필수 항목입니다.

라는 오류창이 뜨는데 뭐가문제인건가요?

flavonoid37 407

M 2023년 5월 17일 11:38 오후

작성하신 내용을 보여주세요. - 박응용님, 2023년 5월 17일 11:54 오후 추천 , 대댓글
@박응용님 작성한 내용이라는게 아이디 ,비밀번호 , 이메일을 말하시는것인가요? 아니면 코드를 말하하시는 건가요? - flavonoid37님, 2023년 5월 18일 12:02 오전 추천 , 대댓글
@flavonoid37님 작성하신 코드요. - 박응용님, 2023년 5월 18일 12:07 오전 추천 , 대댓글
@박응용님 답변으로 첨부했습니다. - flavonoid37님, 2023년 5월 18일 12:19 오전 추천 , 대댓글
목록으로
1개의 답변이 있습니다. 1 / 1 Page

----------templates/navbar.html-----------------

<!--네비게이션바-->
<nav class="navbar navbar-expand-lg navbar-light bg-light border-bottom">
    <div class="container-fluid">
        <a class="navbar-brand" href="{% url 'pybo:index' %}">Pybo</a>
        <button class="navbar-toggler" type="button"
                data-bs-toggle="collapse"
                data-bs-target="#navbarSupportedContent"
                aria-controls="navbarSupportedContent"
                aria-expanded="false"
                aria-label="Toggle navigation">
            <span class="navbar-toggler-icon"></span>
        </button>
        <div class="collapse navbar-collapse" id="navbarSupportedContent">
            <ul class="navbar-nav me-auto mb-2 mb-lg-0">
                <li class="nav-item">
                    {% if user.is_authenticated %}
                    <a class="nav-link" href="{% url 'common:logout'  %}">{{ user.username }}(로그아웃)</a>
                    {% else %}
                    <a class="nav-link" href="{% url 'common:login'  %}">로그인</a>
                    {% endif %}
                </li>
                <li>
                    {% if not user.is_authenticated %}
                    <a class="nav-link" href="{% url 'common:signup' %}">회원가입</a>
                    {% endif %}
                </li>
            </ul>
        </div>
    </div>
</nav>

----common\urls.py----

from django.urls import path
from django.contrib.auth import views as auth_views
from .import views

app_name = 'common'

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'),
]

--------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", "password", "password2", "email")

-------common\views.py----------------

from django.contrib.auth import authenticate, login
from django.shortcuts import render, redirect
from common.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})

----------common\signup.html-----------------

{% extends "base.html" %}
{% block content %}
<div class="container my-3">
    <form method="post" action="{% url 'common:signup' %}">
        {% csrf_token %}
        {% include "form_errors.html" %}
        <div class="mb-3">
            <label for="username">사용자 이름</label>
            <input type="text" class="form-control" name="username" id="username"
                   value="{{ form.username.value|default_if_none:'' }}">
        </div>
        <div class="mb-3">
            <label for="password1">비밀번호</label>
            <input type="password" class="form-control" name="password1" id="password1"
                   value="{{ form.password1.value|default_if_none:'' }}">
        </div>
        <div class="mb-3">
            <label for="password2">비밀번호 확인</label>
            <input type="password" class="form-control" name="password2" id="password2"
                   value="{{ form.password2.value|default_if_none:'' }}">
        </div>
        <div class="mb-3">
            <label for="email">이메일</label>
            <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>
</div>
{% endblock %}

flavonoid37

2023년 5월 18일 12:18 오전

+1 forms.py에서 fields = ("username", "password", "password2", "email") 여기 부분 password가 아니라 password1 으로 해야 합니다. - 박응용님, 2023년 5월 18일 12:23 오전 추천 , 대댓글