Django规范化编程6
Tips: 工欲善其事,必先利其器。我们做Password验证的时候绝壁不可能使用铭文进行验证。 再Django中我们可以采用Django.contrib.auth.hasher.make_password将密码加密。再admin保证铭文注册存储密文,可以采用models下模型重写save达到效果。
最后强调一点, 如果不想用csef直接在settings的中间件中将其删除即可。
Task15 Deemo Login
密码的检验,可以用Django.contrib.auth.hasher.check_password进行检查.登陆之后我们使用session存储用户信息到缓存中同时用户自身也存储信息(cookie) ,之后再登录得时候既可以验证了
# 首先是新建一个有password的model
class Player(models.Model):name = models.CharField(verbose_name='昵称', max_length=10, blank=False, null=False)password = models.CharField(verbose_name='密码', max_length=100, blank=False, null=False)have_game = models.ManyToManyField(Gammer)plant = models.ForeignKey(GamePlant, on_delete=models.PROTECT)objects = User_password_update()# 覆写save方法 方便password的加密def save(self):self.password = make_password(self.password)super().save()class Meta:db_table = 'player'verbose_name = '玩家信息'verbose_name_plural = verbose_name# 覆写object update过滤器 同样是为了方便加密
class User_password_update(models.Manager):def update(self, **kwargs):password = kwargs['password']if '_sha256' not in password:kwargs['password'] = make_password(password)super().update(**kwargs)# views的登录(一个比较详细的登录过程)
@csrf_exempt
def login(request: HttpRequest):if request.method == 'POST':login_id = request.POST.get('id', '')login_pwd = request.POST.get('pwd', '')# 从实际的角度除法,其实这样的判断应该放在前端的if login_pwd == '' or login_id == '':return HttpResponse('没有添加参数,请刷新重试')else:try:player = Player.objects.get(id=int(login_id))except BaseException as e:return HttpResponse('不存在id为', login_id, '的用户')if check_password(login_pwd, player.password):# 设置我们的sessionrequest.session['login_user'] = {# 这里应该缓存中生出来的编码,但是我就不生成了,我直接定西反正用户只有一个'user': 'wangzhihuan'}return show_Games()#return redirect('')else:return HttpResponse('登录失败')else:return HttpResponse('访问方式失败,怀疑是爬虫,你个机器人耗子为汁')
可以看到cookie 中设置了session.在接下来只要进行session的判断即可,我这里没有搞感兴趣的可以搞一下
Task16 路由配置
在上面我们也讲过, Django一共分两个路由,主路由(django-prioject-url)和子路由(django-app-url)
子路由使用需要再主路由中注册(path(include()))
--------------------------------上面属于是咱们Task1 就会的东西了---------
咱们知道,url的配置咋写:
urlpatterns = [ path('model/', model_try),# 子目录path('son/', include('test1.urls'))] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)# 但实际上, url path应该这么写:
app_name = 'game'
urlpatterns = [ path('model/', model_try, name = None),# 子目录path('son/', include('game.urls'),name_space = 'game')] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
也就是说,我们还没有部署项目的时候我们不需要用到name, namespace这两个参数。这两个参数在反向解析中使用
问题又来了,什么是反向解析,反向解析有什么用处?
首先是普通的,或者说正向解析的过程:客户端的浏览器发起了一个url请求, Django根据正则结果返回相应views.
那反向解析,顾名思义就是正向反过来,透过一个views的名字再结合request的参数与值反过来得到url的结果,再跟据url进行正向解析返回结果。使用场景不如说登录或跳转到那个,如我们上面可以使用的return redirect(’’), 里面的参数就可以是我们的命名。简单的概念可以从这篇博客中获取https://www.cnblogs.com/ssgeek/p/13200526.html
Tips:
- 在总路由给子路由赋值namespace字段的时候,一定要app_name引入你的子路由所属的app的位置。(声明子路由)
- 可以在HTML中使用,用来减小修改path得工作量:<a href = “{% url ‘game:login’ val1 val2%}”
- 在我们得views中进行重定向(redirect/ HttpResponseRedirect)
同时众所周知,再Django中url的解析时使用正则表达式进行分配,所以我们可以用正则的方式进行url的写。当然,Django1的保留产物我们就不看了,直接看path方法,也为后面的restful打下一小步基础。
换句话说就是: path(‘url//’)
Django规范化编程6相关推荐
- Django规范化编程3
Task6.5 了解元类 又又又又到了喜闻乐见的吃水不忘挖井人环节https://www.cnblogs.com/ellisonzhang/p/10513238.html 关键概念: 元类是创造类的类 ...
- 规范化编程:ANSI和UNICODE的使用
规范化编程:ANSI和UNICODE的使用 到底什么是ANSI,什么是UNICODE呢?其实这是两种不同的编码方式标准,ANSI中的字符采用8bit,而UNICODE中的字符采用16bit.8b ...
- Django 规范编程5
Task12 表和模板入门 我们都知道,Django的数据要渲染到网页中离不开Template模板的使用.Template 呈现给用户的界面, 实现MVT中的MT的解耦: V视图函数可以渲染(使用)多 ...
- Python爱好者社区历史文章列表(涵盖零基础、爬虫、分析挖掘可视化、机器学习、自然语言处理、面向对象、Django、编程知识、会玩等)...
10月8日更新: Python爱好者社区最新送书活动 0.Python从零开始系列连载: Python从零开始系列连载(1)--安装环境
- python django web典型模块开发实战下载_Django实战 Python Web典型模块与项目开发
本书结合样例,介绍 Django 的基础知识.主要模块的开发以及权限管理等高级内容,并且通过图书管理系统.博客系统.车费管理系统 3 个项目的开发实战,使读者既能掌握 Django 的重要开发技术,又 ...
- python的软件叫什么-django中的app是指什么
Django中的app(application)就是应用的意思,当我们的项目足够大的时候,我们将功能单独分成多个app进行开发. Django中的app app(application)就是应用的意思 ...
- Django 1.8.2 文档
django 百科全书 入门¶刚开始学习Django或者编程?让我们从这里开始吧! 从零开始: 概述 | 安装 教程: 第1部分:模型(100%) | 第2部分:管理站点(100%) | 第3部分:视 ...
- 一、Django框架介绍
一.Django框架介绍 1.1 框架背景 要学习一个框架,了解它的诞生,背景,特点是必不可少的.只有对框架有足够多的了解才能确定这个框架是否适合你自己,当然实践是最好的老师,不能仅凭我一面之词来 ...
- Django 2.2.1.中文文档
本文参考: [Django 文档], [Django中文社区] Django 有丰富的文档.一份高度概述的文档会告诉你在哪里找到特定的东西: ◾教程 通过手把手地方式教你一步步的创建一个 Web 应用 ...
最新文章
- 在Microsoft Word中,Node是如何替代宏的
- 哇赛!我是小龙女啊!
- s3c2440arm裸机编程之ADC触摸屏
- 增量索引和全量索引_搜索引擎(七)高可用的solr搜索引擎服务架构
- windows 2008 终端服务器配置,windows 2008终端服务器设置
- xml mysql配置详解_mapper.xml配置文件详解
- 今天心情不太开心?有点心烦
- 60个有用CSS代码片段
- Airbnb 面试题汇总
- mac版本idea反编译jar包
- WooyunWifi路由器
- Harvard (name and date) 论文引用格式
- 三星2022款 The Frame 画壁电视 评测
- 什么是算法工程师?算法工程师有前景吗?
- 王爽汇编语言 实验14
- 【HTML 教程系列第 18 篇】详解什么是 HTML 中的表格 table
- [BZOJ4398]福慧双修/[BZOJ2407]探险
- 【TJOI 2015】弦论
- PTA天梯赛 L1-006.连续因子
- How to modify comment and attribute ClearCase