在 Django 中实现用户登录功能,最推荐的方式是使用 Django 自带的认证系统(django.contrib.auth)。下面从最基础到常用写法一步步说明。
确保 settings.py 中已启用认证应用(默认就有):
INSTALLED_APPS = [
'django.contrib.auth',
'django.contrib.contenttypes',
...
]
在 urls.py 中:
from django.contrib.auth import views as auth_views
urlpatterns = [
path('login/', auth_views.LoginView.as_view(), name='login'),
path('logout/', auth_views.LogoutView.as_view(), name='logout'),
]
创建模板:
templates/registration/login.html
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">登录</button>
</form>
在 settings.py 中设置:
LOGIN_REDIRECT_URL = '/'
LOGOUT_REDIRECT_URL = '/login/'
✅ 这样就完成了基础登录功能
from django.contrib.auth import authenticate, login
from django.shortcuts import render, redirect
def user_login(request):
if request.method == 'POST':
username = request.POST['username']
password = request.POST['password']
user = authenticate(request, username=username, password=password)
if user is not None:
login(request, user)
return redirect('/')
else:
return render(request, 'login.html', {'error': '用户名或密码错误'})
return render(request, 'login.html')
<form method="post">
{% csrf_token %}
<input name="username">
<input name="password" type="password">
<button type="submit">登录</button>
</form>
from django.contrib.auth.decorators import login_required
@login_required
def profile(request):
return render(request, 'profile.html')
from django.contrib.auth.mixins import LoginRequiredMixin
class ProfileView(LoginRequiredMixin, View):
pass
python manage.py createsuperuser
如果你需要 前后端分离(Vue / React) 或 JWT 登录,我也可以继续讲。
你是用的 Django 模板 还是 前后端分离?
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。