温馨提示×

温馨提示×

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

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

django怎么实现用户登录

发布时间:2026-10-26 02:41:43 来源:亿速云 阅读:90 作者:小樊 栏目:编程语言

在 Django 中实现用户登录,通常可以使用 Django 自带的认证系统(推荐),也可以自己写登录逻辑。下面我分几种常见方式来说明。


一、使用 Django 自带的认证系统(最常用 ✅)

1. 前提条件

确保 django.contrib.auth 和 django.contrib.sessions 已启用(默认就有):

# settings.py
INSTALLED_APPS = [
    'django.contrib.auth',
    'django.contrib.sessions',
    'django.contrib.contenttypes',
]

2. 创建登录视图(基于函数)

# views.py
from django.contrib.auth import authenticate, login
from django.shortcuts import render, redirect

def user_login(request):
    if request.method == 'POST':
        username = request.POST.get('username')
        password = request.POST.get('password')

        user = authenticate(request, username=username, password=password)
        if user is not None:
            login(request, user)
            return redirect('home')
        else:
            return render(request, 'login.html', {'error': '用户名或密码错误'})

    return render(request, 'login.html')

3. 登录模板

<!-- login.html -->
<form method="post">
    {% csrf_token %}
    用户名:<input type="text" name="username"><br>
    密码:<input type="password" name="password"><br>
    <button type="submit">登录</button>
</form>

{% if error %}
<p style="color:red">{{ error }}</p>
{% endif %}

4. 配置 URL

# urls.py
from django.urls import path
from . import views

urlpatterns = [
    path('login/', views.user_login, name='login'),
]

5. 登录后获取用户信息

def home(request):
    if request.user.is_authenticated:
        return HttpResponse(f"欢迎 {request.user.username}")
    return HttpResponse("请先登录")

二、使用 Django 自带的 LoginView(更简单 ✅✅)

Django 自带登录视图,几乎不用写代码。

1. urls.py

from django.contrib.auth.views import LoginView

urlpatterns = [
    path('login/', LoginView.as_view(template_name='login.html'), name='login'),
]

2. 模板(注意字段名)

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

三、退出登录

from django.contrib.auth import logout

def user_logout(request):
    logout(request)
    return redirect('login')

四、登录_required 保护页面

from django.contrib.auth.decorators import login_required

@login_required
def profile(request):
    return HttpResponse("个人中心")

或在 settings.py 中设置登录跳转:

LOGIN_URL = '/login/'

五、常见补充功能

✅ 注册用户

from django.contrib.auth.models import User

User.objects.create_user(username='tom', password='123456')

✅ 使用邮箱登录

自定义 AuthenticationBackend 即可(进阶)。


六、总结推荐方案

方式 推荐度 说明
Django 自带 LoginView ⭐⭐⭐⭐⭐ 最省事
自己写 login() ⭐⭐⭐⭐ 灵活
JWT / DRF ⭐⭐⭐ 用于 API

如果你是 前后端分离 / REST API / Vue+Django,或者想用 JWT 登录,我也可以继续帮你写示例。

向AI问一下细节

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

AI
助
手