Django登录与注销

摘要:
username=request.POST.getpassword=request.POST。Getuser=authenticate3。通过后,用户登录。这涉及会话操作ifuser:#login。此时,sessionloginreturnredirectelse:printII:Django具有注销用户的功能。“Printreturnrender#错误4:未登录时,无法进入主页。只能跳转到登录页面上的特定视图函数,然后将其添加到特定视图函数fromdjango.contrib.auth.decoratorsimportlogin_required@login_requireddefdashboard:returnrender未登录。当您直接访问连接到view函数的url时,您将跳转到Django提供的登录页面。

一:Django中自带着登录,验证功能不用自己再去写登录功能。

1、从相应模块导入组件功能

from django.contrib.auth import authenticate,login

2、从request中拿到用户名密码,验证,验证通过获取到用户对象,不通过为None。

        username = request.POST.get("username")
        password = request.POST.get("password")
        user = authenticate(username=username,password=password)

3、通过之后登录用户,涉及到session操作

        if user:
            # 登录,此时生成了session
            login(request,user)
            return redirect("/crm/")
        else:
            print("no pass")

二:Django中自带注销用户功能。

1、注销标签

<li><a href="{% url 'logout' %}">注销</a></li>
{% url 'logout' %} 表示url中名字为logout的,即name='logout'

2、注销view函数

from django.contrib.auth import authenticate,login,logout

def acc_logout(request):
    logout(request)    # 注销
    return redirect("/login/")    # 页面跳转

三:登录时用户名或者密码出错时,显示错误提示信息:

1、前端页面

            <span style="color: red">{{ error_msg }}</span>

2、后台处理,加上错误信息

    error_msg = ''      # 正确时
    error_msg = 'Wrong username or password!'    
    print(username,password)
return render(request,"login.html",{"error_msg":error_msg})# 错误时

四:没有登录时,不能进入主页面,只能跳转到登录页面

具体的哪个视图函数需要,加在哪个视图函数上

from django.contrib.auth.decorators import login_required
@login_required
def dashboard(request):
    return render(request,"crmapp/dashboard.html")

这样没有登录,直接访问连接到该视图函数的url时,会跳转到Django自带的登录页面。

需要在settings中配置,

LOGIN_URL = '/login/'

  注意url中的next参数:http://127.0.0.1:8080/login/?next=/crm/,表示登录成功后跳转到哪个页面。

免责声明:文章转载自《Django登录与注销》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇boost中的有用工具assign和uuidAT89S52之(定时器2)Timer2下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

django之设置缓存

缓存 一句话总结:缓存可以对view、模板、数据进行缓存可以设置缓存在不同的地方(本地内存、redis、系统文档)可以为服务器节省性能、减少用户等待时间。 对于中等流量的网站来说,尽可能地减少开销是必要的。缓存数据就是为了保存那些需要很多计算资源的结果,这样的话就不必在下次重复消耗计算资源 Django自带了一个健壮的缓存系统来保存动态页面,避免对于每...

Django中的表单

Django中的表单: Django中的表单丰富了传统的HTML语言中的表单。在Django中的表单,主要做以下两件事: 渲染表单模板。 表单验证数据是否合法。 Django中表单使用流程: 在讲解Django表单的具体每部分的细节之前。我们首先先来看下整体的使用流程。这里以一个做一个留言板为例。首先我们在后台服务器定义一个表单类,继承自django....

Django知识总结(一)

壹 ● 有关http协议 一 ● 全称 超文本传输协议(HyperText Transfer Protocol) 二 ● 协议 双方遵循的规范 http协议是属于应用层的协议(还有ftp, smtp等), 即浏览器请求消息和服务器响应消息的一系列规则 三 ● http协议的特性 http是无状态、无连接的协议(stateless, c...

Django模型Model之数据控制详解

模型是MVC架构中访问数据的模块,Django的模型对各种数据库提供了很好的支持。这里以MySQL为例介绍Django的模型。 使用模型 启用数据库支持 在项目的 settings.py 文件中找到 DATABASES 配置项, 根据数据库配置信息: DATABASES = { 'default': { 'ENGINE': 'dj...

使用daphne部署django channles websocket 项目

前言:最近写了一个项目,有部分功能使用django channles websocket写的,使用的链接是wss:// 或者 ws:// ,到真实在uwsgi+nginx部署时,发现wss:// 或者 ws://不可用了,后来查了比较多时间,尝试过修改nginx配置文件,尝试过修改uwsgi配置文件,尝试过使用gunicorn部署,都没有解决此问题。最终发...

Django的锁和事务

Django的锁和事务 锁 select_for_update(nowait=False, skip_locked=False) 返回一个锁住行直到事务结束的查询集,如果数据库支持,它将生成一个 SELECT ... FOR UPDATE 语句。 举个例子: entries = Entry.objects.select_for_update().filte...