
app_name = 'accounts'
urlpatterns = [
path('login/', views.login, name='login'),
]<h1>메인 페이지</h1>
<a href="{% url "accounts:login" %}">Login</a>from django.contrib.auth.forms import AuthenticationForm
def login(request):
if request.method == 'POST':
pass
else:
form = AuthenticationForm()
context = {
'form': form,
}
return render(request, 'accounts/login.html', context)AuthenticationForm()<h1>로그인</h1>
<form action="{% url 'accounts:login' %}" method="POST">
{% csrf_token %}
{{ form }}
<input type="submit">
<\form>from django.contrib.auth import login as auth_login
def login(request):
if request.method == 'POST':
form = AuthenticationForm(request, request.POST)
if form.is_valid():
auth_login(request, form.get_user())
return redirect('articles:index')
else:
form = AuthenticationForm()
context = {
'form': form,
}
return render(request, 'accounts/login.html', context)login(request, user) : AuthenticationForm을 통해 인증된 사용자를 로그인하는 함수
get_user() : AuthenticationForm의 인스턴스 메서드
⇒ 유효성 검사를 통과했을 경우, 로그인 한 사용자 객체를 반환
<h3>Hello, {{ user.username }}</h3>'django.contrib.auth.context_processors.auth')urlpatterns = [
path('login/', views.login, name='login'),
path('logout/', views.logout, name='logout'),
]from django.contrib.auth import logout as auth_logout
def logout(request):
auth_logout(request)
return redirect('articles:index')<h1>메인 페이지</h1>
<a href="{% url "accounts:login" %}">Login</a>
<form action="{% url "accounts:logout" %}" method="POST">
{% csrf_token %}
<input type="submit" value="Logout">
</form>urlpatterns = [
path('login/', views.login, name='login'),
path('logout/', views.logout, name='logout'),
path('signup/', views.signup, name='signup'),
]<h1>메인 페이지</h1>
<a href="{% url "accounts:login" %}">Login</a>
<form action="{% url "accounts:logout" %}" method="POST">
{% csrf_token %}
<input type="submit" value="Logout">
</form>
<a href="{% url "accounts:signup" %}">회원가입</a> |from django.contrib.auth.forms import UserCreationForm
def signup(request):
if request.method == "POST":
pass
else:
form = UserCreationForm()
context = {
'form': form,
}
return render(request, 'accounts/signup.html', context)UserCreationForm()<h1>Signup</h1>
<hr>
<form action="{% url "accounts:signup" %}" method="POST">
{% csrf_token %}
{{ form }}
<input type="submit">
</form>Manager isn't available; 'auth.User' has been swapped for 'accounts. User'from django.contrib.auth import get_user_model
from django.contrib.auth.forms import UserCreationForm
class CustomCreationForm(UserCreationForm):
class Meta(UserCreationForm.Meta):
model = get_user_model()get_user_model()get_user_model()을 사용해 참조해야 한다고 강조하고 있음from .forms import CustomUserCreationForm
def signup(request):
if request.method == 'POST':
form = CustomUserCreationForm(request.POST)
if form.is_valid():
form.save()
return redirect('articles:index')
else:
form = CustomUserCreationForm()
context = {
'form': form,
}
return render(request, 'accounts/signup.html', context)request.user.delete()를 활용해서 유저 객체 삭제를 진행urlpatterns = [
path('login/', views.login, name='login'),
path('logout/', views.logout, name='logout'),
path('signup/', views.signup, name='signup'),
path('delete/', views.delete, name='delete'),
]<form action="{% url "accounts:delete" %}" method="POST">
{% csrf_token %}
<input type="submit" value="회원탈퇴">
</form>def delete(request):
request.user.delete()
return redirect('articles:index'){% if request.user.is_authenticated %}
...
{% else %}
<a href="{% url 'accounts:login' %}">Login</a>
<a href="{% url 'accounts:signup' %}">Signup</a>
{% endif %}def login(request):
if request.user.is_authenticated:
return redirect('articles:index')
...
def signup(request):
if request.user.is_authenticated:
return redirect('articles:index')
...from django.contrib.auth.decorators import login_required
@login_required
def create(request):
pass
@login_required
def delete(request, article_pk):
pass
@login_required
def update(request, article_pk):
passfrom django.contrib.auth.decorators import login_required
@login_required
def logout(request):
pass
@login_required
def delete(request):
pass
@login_required
def update(request):
pass
@login_required
def change_password(request):
pass