Django编写类方式验证登陆

在视图函数中,有些操作是需要用户在登录前提下才能进行的。

方法一: 
采用request方法来得到用户是否登录信息:

if request.user.is_authenticated():
    ...
else:
    return render(requeset, 'login.html')
  • 1
  • 2
  • 3
  • 4

方法二: 
在试图函数中继承一个基础类,可以判断用户是否登录。

在utils.py中定义一个基础类:

from django.contrib.auth.decorators import login_required
from django.utils.decorators import method_decorator


class LoginRequiredMixin(object):
    """
    判断用户是否登录
    """
    @method_decorator(login_required(login_url='/login/'))
    def dispatch(self, request, *args, **kwargs):
        return super(LoginRequiredMixin, self).dispatch(request, *args, **kwargs)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

在编写视图函数时,继承该类:

from utils import LoginRequiredMixin

class CourseCommentView(LoginRequiredMixin, View):
    """
    课程评论
    """
    def get(self, request):
        pass
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

第二种方式方便很多视图函数的继承,第一种方式用于页面中部分内容的判定。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Django中,可以使用内置的登录验证系统来进行用户认证。以下是实现登录验证的一般步骤: 1. 在 settings.py 中设置 AUTHENTICATION_BACKENDS 参数,指定认证后端: ```python AUTHENTICATION_BACKENDS = [ 'django.contrib.auth.backends.ModelBackend', ] ``` 2. 在 views.py 中编写登录视图函数: ```python from django.shortcuts import render, redirect from django.contrib.auth import authenticate, login def login_view(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('home') # 登录成功,重定向到首页 else: error_message = '用户名或密码错误' else: error_message = '' return render(request, 'login.html', {'error_message': error_message}) ``` 3. 在模板文件 login.html 中编写登录表单: ```html <form method="post" action="{% url 'login' %}"> {% csrf_token %} <input type="text" name="username" placeholder="用户名" required> <input type="password" name="password" placeholder="密码" required> <button type="submit">登录</button> </form> {% if error_message %} <p>{{ error_message }}</p> {% endif %} ``` 4. 在 urls.py 中添加登录视图的路由: ```python from django.urls import path from . import views urlpatterns = [ path('login/', views.login_view, name='login'), # 其他路由... ] ``` 这样,用户在登录表单中输入用户名和密码后,点击“登录”按钮,会提交 POST 请求到 /login/ 路由,Django 会调用 login_view 视图函数进行认证。如果认证成功,用户会被重定向到首页;否则,会在登录表单下方显示错误提示。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值