Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- c3 축 없애기
- python popen
- gcc 업데이트
- c3 축 가리기
- g++ 업데이트
- linux시간으로 변경
- python os
- CentOS7
- InfluxDB
- 정규식 컴파일
- c++ 정규식
- telegraf
- 정규식 문자열 출력
- python subprocess
- 백준
- 정규식 활용
- influxdb 설치
- c3 step graph
- regex_search
- grafana dashboard
- 1697
- snmp
- semanage
- c3 초
- centos pyhon 설치
- selinux port 등록
- c3 second
- snmp test
- gcc regex
- subporcess path
Archives
- Today
- Total
리셋 되지 말자
[CSAPI] Django 회원가입 구현 본문
Django 의 model
회원가입 기능 구현을 하기 전에, 잠시 복기
auth app의 기본 model
- mariadb 의 auth_user 테이블 확인
+----+-----------+----------------------------+--------------+----------+------------+-----------+---------------------+----------+-----------+----------------------------+
| id | password | last_login | is_superuser | username | first_name | last_name | email | is_staff | is_active | date_joined |
+----+-----------+----------------------------+--------------+----------+------------+-----------+---------------------+----------+-----------+----------------------------+
usercreationform : 링크
modelform : 링크
signup 구현
회원가입도 django.contrib.auth 앱을 통해 구현한다.
templates/csapi/main.html 수정 - 로그인한 상태가 아닌 경우, 회원가입 링크가 보이도록 수정한다.
{% block content %}
<html>
<head>
</head>
<body>
{% if user.is_authenticated %}
<a href="{% url 'login:logout' %}">{{ user.username }} (Logout)</a>
{% else %}
<a href="{% url 'login:login' %}">Sign In</a>
<a href="{% url 'login:signup' %}">Sign Up</a>
{% endif %}
</body>
</html>
{% endblock %}
login/urls.py 수정 - signup url 로 요청이 오면 views.py 의 signup 을 호출하도록 수정한다
from django.urls import path
from django.contrib.auth import views as auth_views
from . import views
app_name = 'login'
urlpatterns = [
path('login/', auth_views.LoginView.as_view(template_name='login/login.html'), name='login'),
path('logout/', auth_views.LogoutView.as_view(), name='logout'),
path('signup/', views.signup, name='signup'),
]
login/views.py 수정 - signup 함수를 추가한다
from django.shortcuts import render
from django.http import HttpResponse
def index(request):
return HttpResponse('login 페이지입니다')
def signup(request):
return HttpResponse('회원가입 동작 확인')
중간 테스트
login/forms.py 작성 - username, password1, password2 속성을 갖는 UserCreationForm 에 email 필드를 추가하기 위해 UserCreationForm 을 상속시켜 확장
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", "password1", "password2", "email") # add email field
login/views.py 의 signup 함수 수정 - login에 성공하면 main 페이지로 redirect
from django.shortcuts import render, redirect
from django.http import HttpResponse
from django.contrib.auth import authenticate, login
from login.forms import UserForm
def index(request):
return HttpResponse('login 페이지입니다')
def signup(request):
if request.method == "POST":
form = UserForm(request.POST)
if form.is_valid():
form.save()
username = form.cleaned_data.get('username')
password1 = form.cleaned_data.get('password1')
# user authentication
user = authenticate(username=username, password=password1)
# login
login(request, user)
return redirect('/')
else:
form = UserForm()
return render(request, 'login/signup.html', {'form' : form})
templates/login/signup.html 작성
{% block content %}
<html>
<head>
</head>
<body>
<h1>회원가입 페이지</h1><br>
<div>
<form method="post" action="{% url 'login:signup' %}">
{% csrf_token %}
{% if form.errors %}
{% for field in form %}
{% for error in field.errors %} <!-- field error -->
<strong>{{ field.label }}</strong>
{{ error }}
{% endfor %}
{% endfor %}
{% for error in form.non_field_errors %} <!-- None field error -->
<strong>{{ error }}</strong>
{% endfor %}
{% endif %}
<h4>이름 : </h4>
<input type="text" name="username" value="{{ form.username.value|default_if_none:'' }}">
<h4>비밀번호 : </h4>
<input type="password" name="password1" value="{{ form.password1.value|default_if_none:'' }}">
<h4>비밀번호 확인 : </h4>
<input type="password" name="password2" value="{{ form.password2.value|default_if_none:'' }}">
<h4>이메일 : </h4>
<input type="email" name="email" value="{{ form.email.value|default_if_none:'' }}">
<button type="submit">제출</button>
</form>
</div>
</body>
</html>
{% endblock %}
signup 테스트
database 서버의 DB 데이터 확인
'프로젝트' 카테고리의 다른 글
[CSAPI] Django Origin Image 모델 추가 (0) | 2021.10.05 |
---|---|
[CSAPI] Django DB 스키마 설계 (0) | 2021.10.05 |
[CSAPI] Django login, logout 구현 (0) | 2021.10.05 |
[CSAPI] Django login app 생성 (0) | 2021.10.04 |
[CSAPI] Django csapi app 생성 (0) | 2021.10.04 |
Comments