Django开发实战之登录用户鉴权登录界面实现

Django自带的鉴权系统非常的安全,大家可以放心使用,那么如何使用呢?

1、首先需要检查settings文件种的INSTALLED_APPS,有没有这两部分内容:

2、检查中间件,比如这两个中间件,一个是用于登录,一个是用于鉴权

'django.contrib.sessions.middleware.SessionMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',

 接下来如何进行使用呢,

首选我们需要做到禁止匿名访问,也就是必须登录才能访问,示例代码如下:

def submit(request):request.user:AbstractBaseUserif not request.user.is_authenticated: #如果已登录,返回ture,否则返回falsereturn HttpResponse("请先登录",status = 403)if request.method == 'GET':html = open("submit.html", encoding="utf-8").read()return HttpResponse(html)elif request.method == 'POST':# 获取提交的表单数据data = json.loads(request.body)my_sql()print("请求数据",data)# obj:Feedback = Feedback.objects.filter(id=4).delete()obj_list: list[Feedback] = Feedback.objects.filter(id=5).filter(anonymous=True)  # 获取id等于2,并且是匿名的数据print(f"sql={obj_list.query}") #显示sql语句for obj in obj_list:print(f"obj={obj}")return JsonResponse({'status': 'success'})

 

 但是这种方式有个弊端,如果我需要每个视图函数访问之前都需要登录,那么我就需要在每个视频函数里面都添加上面的代码,这样会很不方便,接下来引入第二种方式:装饰器

import json
import osfrom django.contrib.auth import login, logout
from django.contrib.auth.base_user import AbstractBaseUser
from django.shortcuts import render
from django.http import JsonResponse, HttpResponse, HttpResponseRedirect, HttpResponsePermanentRedirect
from django.contrib.auth.models import User
from django.contrib.auth.hashers import make_password
from django.template.loader import render_to_string
from django.urls import reverse
from django.contrib.auth.decorators import login_requiredfrom django.db import connectionfrom lili.models import Feedback@login_required
def submit(request):# request.user:AbstractBaseUser# if not request.user.is_authenticated: #如果已登录,返回ture,否则返回false#     return HttpResponse("请先登录",status = 403)if request.method == 'GET':html = open("submit.html", encoding="utf-8").read()return HttpResponse(html)elif request.method == 'POST':# 获取提交的表单数据data = json.loads(request.body)my_sql()print("请求数据",data)# obj:Feedback = Feedback.objects.filter(id=4).delete()obj_list: list[Feedback] = Feedback.objects.filter(id=5).filter(anonymous=True)  # 获取id等于2,并且是匿名的数据print(f"sql={obj_list.query}") #显示sql语句for obj in obj_list:print(f"obj={obj}")return JsonResponse({'status': 'success'})

 如果是匿名用户访问视图时,可以重定向到登录页面

接下来教大家如何实现一个登录页面:
1、首先在全局urls那里配置django的路由,也就是根据urls来创建路由

 path('accounts/', include('django.contrib.auth.urls'))

 2、创建一个模板,不然会报错,提示找不到模板templates,

在app路径下面新增一个templates,再新增registration

然后在registration下面创建一个html文件,这些都是根据上面那个报错来的

 再次刷新,还是报错:

这个时候检查配置文件里面模板相关的内容:

但是再次刷新,发现还是打不开,是因为这个时候需要手动重启下项目,因为配置文件不会被自动加载

这样就可以拉,这里之所以是空白,是因为创建的这个页面本身就是空白的

这样再次去访问之前提交评论的页面,就会自动跳到登录页面

login.html一般需要根据自己公司的情况自己写,如果不想写,也可以继承django的登录页面,只需要在login.html页面中写入这样的内容,原有的内容删掉

{% extends "admin/login.html" %}

这样再次刷新的时候,就跳转到这个界面:

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/670821.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【人工智能Ⅱ】实验6:目标检测算法

实验6:目标检测算法 一:实验目的与要求 1:了解两阶段目标检测模型 RCNN或Faster RCNN模型的原理和结构。 2:学习通过RCNN或Faster RCNN模型解决目标检测问题。 二:实验内容 常用的深度学习框架包括PyTorch和PaddleP…

企业邮箱是什么样子的?怎么弄一个企业邮箱

企业邮箱是什么样子的?企业使用的电子邮箱有特征?其实,企业邮箱的主要特征就在于电子邮箱域名的个性化,以及可扩展性的功能,在使用企业邮箱时能够提升公司的品牌形象。今天小编和大家仔细来聊聊。 一、企业邮箱是什么…

基于Springboot+Vue+Java的学生就业管理系统

💞 文末获取源码联系 🙉 👇🏻 精选专栏推荐收藏订阅 👇🏻 🎀《Java 精选实战项目-计算机毕业设计题目推荐-期末大作业》😘 更多实战项目~ https://www.yuque.com/liuyixin-rotwn/ei3…

电子取证平航杯的复现

闻早起部分: 一、闻早起的windows10电脑 (1).“闻早起”所使用的笔记本电脑使用何种加密程式? 1.在EFI文件中找到加密程式 (2) 教徒“闻早起”所使用的笔记本电脑中安装了一款还原软件,其版本…

大模型_DISC-MedLLM基于Baichuan-13B-Base医疗健康对话

文章目录 DISC-MedLLM介绍概述数据集部署推理流程 DISC-MedLLM 介绍 DISC-MedLLM 是一个专门针对医疗健康对话式场景而设计的医疗领域大模型,由复旦大学数据智能与社会计算实验室 (Fudan-DISC) 开发并开源。 该项目包含下列开源资源: DISC-Med-SFT 数据集 (不包…

对于子数组问题的动态规划

前言 先讲讲我对于这个问题的理解吧 当谈到解决子数组问题时,动态规划(DP)是一个强大的工具,它在处理各种算法挑战时发挥着重要作用。动态规划是一种思想,它通过将问题分解成更小的子问题并以一种递归的方式解决它们,然后利用这些…

9.媒体元素

视频元素 视频标签基本代码结构&#xff1a; <video src"" controls></video>其中src是视频资源的路径&#xff0c;这个路径有绝对路径和相对路径这里推荐用相对路径。&#xff08;这里可以回顾我html系列的第四篇图片标签&#xff09;&#xff0c;我们…

力扣每日一题111:二叉树的最小深度

题目 简单 给定一个二叉树&#xff0c;找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说明&#xff1a;叶子节点是指没有子节点的节点。 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;2示例 2&#x…

redis stream 作为消息队列的最详细的命令说明文档

简介 stream 作为消息队列&#xff0c;支持多次消费&#xff0c;重复消费&#xff0c;ack机制&#xff0c;消息异常处理机制。 涉及到以下几个概念&#xff0c;消息流&#xff0c;消费者组&#xff0c;消费者。 涉及到以下命令 # 添加消息到流中 XADD key [NOMKSTREAM] [&…

C++初阶学习第五弹——类与对象(下)——类与对象的收官战

类与对象&#xff08;上&#xff09;&#xff1a;C初阶学习第三弹——类与对象&#xff08;上&#xff09;——初始类与对象-CSDN博客 类与对象&#xff08;中&#xff09;&#xff1a;C初阶学习第四弹——类与对象&#xff08;中&#xff09;——刨析类与对象的核心点-CSDN博…

基于大模型的idea提炼:围绕论文和引用提炼idea之ResearchAgent

前言 对本博客比较熟悉的朋友知道&#xff0c;我司论文项目组正在基于大模型做论文的审稿(含CS英文论文审稿、和金融中文论文审稿)、翻译&#xff0c;且除了审稿翻译之外&#xff0c;我们还将继续做润色/修订、idea提炼(包含论文检索)&#xff0c;是一个大的系统&#xff0c;包…

LangChain 概念篇(喂饭级)

LangChain 介绍 LangChain 是一个用于开发由语言模型驱动的应用程序的框架。 LangChain 框架的设计目标 支持应用程序让其不仅会通过 API 调用语言模型&#xff0c;而且还会数据感知&#xff08;将语言模型连接到其他数据源&#xff09;&#xff0c;Be agentic&#xff08;允…