Python 从0开始 一步步基于Django创建项目(10)用户登录和注销
    		       		warning:
    		            这篇文章距离上次修改已过422天,其中的内容可能已经有所变动。
    		        
        		                
                在这一部分,我们将实现用户的登录和注销功能。
首先,我们需要为用户登录创建一个表单。在 blogproject/accounts/forms.py 文件中,添加以下代码:
from django import forms
from django.contrib.auth import authenticate, login
 
class LoginForm(forms.Form):
    username = forms.CharField()
    password = forms.CharField(widget=forms.PasswordInput)
 
    def login(self, request):
        username = self.cleaned_data.get('username')
        password = self.cleaned_data.get('password')
 
        user = authenticate(request, username=username, password=password)
        if user is not None:
            if user.is_active:
                login(request, user)
                return True
            else:
                return False
        else:
            return False然后,我们需要在 blogproject/accounts/views.py 文件中添加登录视图:
from django.shortcuts import render, redirect
from .forms import LoginForm
 
def user_login(request):
    if request.method == 'POST':
        form = LoginForm(request.POST)
        if form.is_valid():
            if form.login(request):
                return redirect('/')
            else:
                return render(request, 'accounts/login.html', {'form': form, 'error': 'Username or password is incorrect.'})
    else:
        form = LoginForm()
    return render(request, 'accounts/login.html', {'form': form})接下来,我们需要创建登录模板 blogproject/templates/accounts/login.html:
<form method="post" action="{% url 'login' %}">
    {% csrf_token %}
    {{ form.as_p }}
    <button type="submit">Login</button>
    <p style="color: red;">{{ error }}</p>
</form>最后,我们需要在 blogproject/urls.py 文件中添加登录视图的 URL 映射:
from django.urls import path
from .views import user_login
 
urlpatterns = [
    # ...
    path('login/', user_login, name='login'),
]用户注销的实现相对简单,我们只需要在 blogproject/accounts/views.py 文件中添加注销视图:
from django.contrib.auth import logout
 
def user_logout(request):
    logout(request)
    return redirect('/')然后,在 blogproject/urls.py 文件中添加注销视图的 URL 映射:
path('logout/', user_logout, name='logout'),现在,你可以通过访问 /login/ 和 /logout/ 来进行用户的登录和注销操作。
评论已关闭