温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

django怎么实现用户登录功能

发布时间:2026-10-05 12:17:03 来源:亿速云 阅读:97 作者:小樊 栏目:编程语言

在 Django 中实现用户登录功能,最推荐的方式是使用 Django 自带的认证系统(django.contrib.auth)。下面从最基础到常用写法一步步说明。


一、使用 Django 自带登录(最简单)

1. 准备工作

确保 settings.py 中已启用认证应用(默认就有):

INSTALLED_APPS = [
    'django.contrib.auth',
    'django.contrib.contenttypes',
    ...
]

2. 登录 URL(无需自己写视图)

在 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'),
]

3. 登录模板

创建模板:

templates/registration/login.html
<form method="post">
    {% csrf_token %}
    {{ form.as_p }}
    <button type="submit">登录</button>
</form>

4. 登录成功后跳转

在 settings.py 中设置:

LOGIN_REDIRECT_URL = '/'
LOGOUT_REDIRECT_URL = '/login/'

✅ 这样就完成了基础登录功能


二、自己写登录视图(更灵活)

1. 视图代码

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')

2. 模板

<form method="post">
    {% csrf_token %}
    <input name="username">
    <input name="password" type="password">
    <button type="submit">登录</button>
</form>

三、登录限制(必须登录才能访问)

方法 1:装饰器

from django.contrib.auth.decorators import login_required

@login_required
def profile(request):
    return render(request, 'profile.html')

方法 2:类视图

from django.contrib.auth.mixins import LoginRequiredMixin

class ProfileView(LoginRequiredMixin, View):
    pass

四、创建测试用户

python manage.py createsuperuser

五、常见扩展

  • ✅ 使用邮箱登录
  • ✅ 记住我(session 过期时间)
  • ✅ 登录失败次数限制
  • ✅ JWT / Token 登录(DRF)

如果你需要 前后端分离(Vue / React) 或 JWT 登录,我也可以继续讲。

你是用的 Django 模板 还是 前后端分离?

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手