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相关推荐

  1. Django规范化编程3

    Task6.5 了解元类 又又又又到了喜闻乐见的吃水不忘挖井人环节https://www.cnblogs.com/ellisonzhang/p/10513238.html 关键概念: 元类是创造类的类 ...

  2. 规范化编程:ANSI和UNICODE的使用

    规范化编程:ANSI和UNICODE的使用    到底什么是ANSI,什么是UNICODE呢?其实这是两种不同的编码方式标准,ANSI中的字符采用8bit,而UNICODE中的字符采用16bit.8b ...

  3. Django 规范编程5

    Task12 表和模板入门 我们都知道,Django的数据要渲染到网页中离不开Template模板的使用.Template 呈现给用户的界面, 实现MVT中的MT的解耦: V视图函数可以渲染(使用)多 ...

  4. Python爱好者社区历史文章列表(涵盖零基础、爬虫、分析挖掘可视化、机器学习、自然语言处理、面向对象、Django、编程知识、会玩等)...

    10月8日更新: Python爱好者社区最新送书活动 0.Python从零开始系列连载: Python从零开始系列连载(1)--安装环境

  5. python django web典型模块开发实战下载_Django实战 Python Web典型模块与项目开发

    本书结合样例,介绍 Django 的基础知识.主要模块的开发以及权限管理等高级内容,并且通过图书管理系统.博客系统.车费管理系统 3 个项目的开发实战,使读者既能掌握 Django 的重要开发技术,又 ...

  6. python的软件叫什么-django中的app是指什么

    Django中的app(application)就是应用的意思,当我们的项目足够大的时候,我们将功能单独分成多个app进行开发. Django中的app app(application)就是应用的意思 ...

  7. Django 1.8.2 文档

    django 百科全书 入门¶刚开始学习Django或者编程?让我们从这里开始吧! 从零开始: 概述 | 安装 教程: 第1部分:模型(100%) | 第2部分:管理站点(100%) | 第3部分:视 ...

  8. 一、Django框架介绍

    一.Django框架介绍 1.1 框架背景 ​ 要学习一个框架,了解它的诞生,背景,特点是必不可少的.只有对框架有足够多的了解才能确定这个框架是否适合你自己,当然实践是最好的老师,不能仅凭我一面之词来 ...

  9. Django 2.2.1.中文文档

    本文参考: [Django 文档], [Django中文社区] Django 有丰富的文档.一份高度概述的文档会告诉你在哪里找到特定的东西: ◾教程 通过手把手地方式教你一步步的创建一个 Web 应用 ...

最新文章

  1. 在Microsoft Word中,Node是如何替代宏的
  2. 哇赛!我是小龙女啊!
  3. s3c2440arm裸机编程之ADC触摸屏
  4. 增量索引和全量索引_搜索引擎(七)高可用的solr搜索引擎服务架构
  5. windows 2008 终端服务器配置,windows 2008终端服务器设置
  6. xml mysql配置详解_mapper.xml配置文件详解
  7. 今天心情不太开心?有点心烦
  8. 60个有用CSS代码片段
  9. Airbnb 面试题汇总
  10. mac版本idea反编译jar包
  11. WooyunWifi路由器
  12. Harvard (name and date) 论文引用格式
  13. 三星2022款 The Frame 画壁电视 评测
  14. 什么是算法工程师?算法工程师有前景吗?
  15. 王爽汇编语言 实验14
  16. 【HTML 教程系列第 18 篇】详解什么是 HTML 中的表格 table
  17. [BZOJ4398]福慧双修/[BZOJ2407]探险
  18. 【TJOI 2015】弦论
  19. PTA天梯赛 L1-006.连续因子
  20. How to modify comment and attribute ClearCase

热门文章

  1. Centos7 公钥登陆
  2. NO.1 QN9021 Printf重定向
  3. 我的学生的码云链接(2019级)
  4. ansible运维工具介绍
  5. Linux开机关闭防火墙端口
  6. 牛客网笔试输入输出总结<记录自己踩的坑>
  7. python时间戳换成秒数_Python时间戳转换成时间方法
  8. Tortoisesvn从SVN检出、导出和上传文件
  9. 【例10.6】在磁盘文件上存有10个学生的数据。要求将第1,3,5,7,9个学生数据输入计算机,并在屏幕上显示出来。
  10. TreeJS ppt技术分享