Django authentication๋ฅผ ์ด์ฉํ๋ฉด form์ ์ฅ๊ณ ์์ ์ ๊ณตํด์ฃผ๊ธฐ ๋๋ฌธ์
๊ฐ๋จํ๊ฒ ํ์๊ฐ์ , ๋ก๊ทธ์ธ, ๋ก๊ทธ์์์ ๊ตฌํํ ์ ์์ต๋๋ค.
ํ์ํ ์ฝ๋๋ https://www.programcreek.com/python/์ฐธ๊ณ
github - https://github.com/seunghyun1003/web1
๋ชฉ์ฐจ
- <ํ์๊ฐ์
๊ตฌํ>
- 1. urls, view, template์์
- 2. ๊ฒฐ๊ณผ
- <๋ก๊ทธ์ธ ๊ตฌํ>
- 1. urls, view, template์์
- 2. ๋ก๊ทธ์ธ ํ ํ์ผ๋ก ์ด๋ํ๋ ์ค์
- 3. ๊ฒฐ๊ณผ
- <๋ก๊ทธ์์ ๊ตฌํ>
- urls, view, template์์
<ํ์๊ฐ์ ๊ตฌํ>
1. urls, view, template์์
urls ์์ : simp_web/urls.py์ ์๋ ์ฝ๋ ์ถ๊ฐ
path('signup', views.signup, name='signup'), #์ถ๊ฐ
view ์์ : simp_web/views.py์ signup๋ฉ์๋ ์ถ๊ฐ
from .forms import UserForm, LoginForm
from django.contrib.auth.models import User
from django.contrib.auth import login, authenticate
from django.contrib.auth.forms import UserCreationForm
from django.http import HttpResponseRedirect
from django.urls import reverse
def signup(request):
if request.method != 'POST':
form = UserCreationForm()
else:
form = UserCreationForm(data=request.POST)
if form.is_valid():
new_user = form.save()
authenticated_user = authenticate(username=new_user.username,
password=request.POST['password1'])
login(request, authenticated_user)
return HttpResponseRedirect(reverse('index'))
context = {'form': form}
return render(request, 'simp_web/signup.html', context)
template ์์
- templates/base_generic.html์ ์๋ ๋ถ๋ถ์ถ๊ฐ
<li class="nav-item">
<a class="nav-link active" href="{% url 'signup' %}">ํ์๊ฐ์
ํ๊ธฐ</a>
</li>
- templates/registration/signup.html ์์ฑ
{% extends 'simp_web/base_generic.html' %}
{% load staticfiles %}
{% block content %}
<h2>ํ์๊ฐ์
</h2>
<form method="post" action="">
{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="ํ์๊ฐ์
" />
</form>
{% endblock content %}
2. ๊ฒฐ๊ณผ
<๋ก๊ทธ์ธ ๊ตฌํ>
1. urls, view, template์์
url ์์ : urls.py์ ์๋ ์ฝ๋ ์ถ๊ฐ
path('login', views.login_view, name='login'), #์ถ๊ฐ
view ์์ : views.py์ login_view๋ฉ์๋ ์ถ๊ฐ
from django.contrib.auth.models import User
from django.contrib.auth import login, authenticate
from django.contrib.auth.forms import AuthenticationForm
from django.http import HttpResponse
from django.http import HttpResponseRedirect
from django.urls import reverse
from django.template import RequestContext
def login_view(request): #๋ฉ์๋ ์ด๋ฆ login์ผ๋กํ๋ฉด ์ค๋ฅ๋ ์ ์์
if request.user.is_authenticated:
return HttpResponseRedirect('/simp_web')
if request.method == 'GET':
form = AuthenticationForm()
return render(request, 'simp_web/login.html', {'form': form})
if request.method == 'POST':
form = AuthenticationForm(request=request, data=request.POST)
if form.is_valid():
username = form.cleaned_data.get('username')
password = form.cleaned_data.get('password')
user = authenticate(username=username, password=password)
if user is not None:
print(user)
login(request, user)
return HttpResponseRedirect('/simp_web')
else:
print('User not found')
else:
# If there were errors, we render the form with these
# errors
return render(request, 'simp_web/login.html', {'form': form})
template ์์
- templates/base_generic.html
<li class="nav-item">
<a class="nav-link active" href="{% url 'login_view' %}">๋ก๊ทธ์ธํ๊ธฐ</a>
</li>
- simp_web/login.html ์์ฑ
{% extends 'base_generic.html' %}
{% load staticfiles %}
{% block content %}
<h2>๋ก๊ทธ์ธ</h2>
<form method="post" action="">
{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="๋ก๊ทธ์ธ" />
</form>
{% endblock content %}
2. ๋ก๊ทธ์ธ ํ ํ์ผ๋ก ์ด๋ํ๋ ์ค์
- settings.py
# ๋ก๊ทธ์ธ ์ดํ ๊ฒฝ๋ก ์์
LOGIN_REDIRECT_URL = "/simp_web/"
3. ๊ฒฐ๊ณผ
<๋ก๊ทธ์์ ๊ตฌํ>
urls, view, template์์
- url ์์ : urls.py์ ์๋ ์ฝ๋ ์ถ๊ฐ
path('logout', views.logout, name='login'), #์ถ๊ฐ
- view ์์ : simp_web/views.py์ logout๋ฉ์๋ ์ถ๊ฐ
from django.contrib.auth.models import User
from django.contrib import auth
def logout(request):
auth.logout(request)
return HttpResponseRedirect(reverse('index'))
- template ์์ : templates/base_generic.html
<li class="nav-item">
<a class="nav-link active" href="{% url 'logout' %}">๋ก๊ทธ์์ํ๊ธฐ</a>
</li>
'๐ก์น ํ๋ก์ ํธ > (๋ฐฑ์๋)Django - ํ๋ก์ ํธ01' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก์ ํธ01. Cloud ์๋ฒ(PythonAnywhere)๋ก Django ๋ฐฐํฌํ๊ธฐ (0) | 2020.01.21 |
---|---|
ํ๋ก์ ํธ01. bootstrap ์ ์ฉํ๊ธฐ (0) | 2019.12.11 |
ํ๋ก์ ํธ01. ํจ์ํ ๋ทฐ์์ ํด๋์คํ ๋ทฐ๋ก ๋ณ๊ฒฝ & detail, update, delete๊ตฌํ (0) | 2019.12.09 |
ํด๋์คํ view (0) | 2019.12.09 |
ํ๋ก์ ํธ01. admin ์ฌ์ดํธ์ model class ๋ฑ๋กํ๊ธฐ (0) | 2019.12.09 |