2020/03/01 04-模板习题和注册功能基本实现

模版用的还是比较多的,企业不可能全部做前后端分离,html标签和服务器端代码混写,应该把数据准备好,让模版做更少的操作。没必要过滤器来炫技,要什么数据准备什么数据即可,尽量少做操作
在这里插入图片描述
在这里插入图片描述
第一步先应该在settings里将模版的搜索目录填好
在这里插入图片描述
下面要把项目运行起来,让他能够做url映射,必须配置路由文件,一开始我们配的是blog下的,urls,全局的
在这里插入图片描述
每个请求应该单独调用对应的handler,不可能混用,每个请求送到函数里去,各自压自己的栈,互不影响。
现在准备对testlist进行遍历

在这里插入图片描述
需要奇偶行,模版做好后,就遍历里面的所有元素,将这个元素该打印打印,ul放在外面,迭代里面的li即可。forloop是行号
在这里插入图片描述
在这里插入图片描述
行号就不要加reverse了,往往都是从1开始
在这里插入图片描述
刷新一下F5
在这里插入图片描述
现在已经满足了对行号的要求,然后所有数据需要+100

在这里插入图片描述

现在+100,需要过滤器来完成

在这里插入图片描述
在这里插入图片描述
为了避免问题,还是加上引号
在这里插入图片描述
要求奇偶颜色不同
在这里插入图片描述

在这里插入图片描述
现在奇偶的效果是出来了
在这里插入图片描述

就一点不一样,试试使用三元表达式在这里插入图片描述
就是yes or no的问题,其实就是说的三元表达式
在这里插入图片描述
能整除就是event,不能就是odd。先整除,后判断
在这里插入图片描述

在这里插入图片描述
现在有了这个基础,开始考虑颜色,这部分提取出来考虑颜色的问题

在这里插入图片描述
在模版渲染的时候不关心标签,只关心要替换的位置
在这里插入图片描述
所以是先用渲染函数,把我们的数据处理完,处理完之后拼接到字符串里填的空,只不过这个空是循环填,循环完了以后,字符串最后变成了一个url里面套很多li在这里插入图片描述
服务器这端,玩的就是字符串替换,替换完生成的正文字符串,发回浏览器端,浏览器看到MIME类型是什么类型,如html就按照html解析,渲染,构造DOM树。
所有动态语言都这样,只要出现这种语法都会将这些内容在服务器端做替换,如果是循环就循环替换,替换完了,会生成一个文本。这个文本被http封装成http报文返回到浏览器端,由浏览器负责解释渲染
在这里插入图片描述
这一块是把它先替换,替换完了就变成大字符串里面,这个表达式最后通过管道,要么输出red,要么blue,把red拼到color:后面
在这里插入图片描述
现在就搞定了
在这里插入图片描述
这就是输出的结果
在这里插入图片描述
也可以通过奇偶行的样式不同来改变颜色
在这里插入图片描述
在这里插入图片描述
打印99乘法表需要用表格
在这里插入图片描述
日常方式输出,要么是上面的方式,要么是table,就这两种,一般企业不会用react,就用模版
在这里插入图片描述

用户功能设计与实现

在这里插入图片描述
用户是否激活,有个active字段,改成1/0,int,一般字段设计用char,varchar,int,tinint 一个字节,int4个字节,bigint8个字节。
有时候datetime用一下

有了user之后,就要围绕user表做一些功能,方法加url结合在一起就是restful风格,前后端分离都需要,
在这里插入图片描述
需要两个东西,方法和url,查询字符串基本不用,如果要把数据推送上去就要采用post,注册的时候需要推送emil,用户名 ,密码
在这里插入图片描述
POST现在不采用传统的表单提交了,准备使用前端的ajax,做完前端依然会有界面,依然表单控件,提交数据但是不是用form表单的post了,会转换成json,用js转换成json,用json的方式,和后台进行交互

B端会发送AJAX请求,用异步的方式提交请求,之前是用postman构造数据发送请求给server,server其实不关心你用的是浏览器还是不是浏览器,只关心发的请求对不对,postman是个工具浏览器

在这里插入图片描述
后端用postman这种工具浏览器来测试我们开发的功能
在这里插入图片描述
前端假定要访问谁,访问一个server但是没有开发好,就会有一个模拟的server,测试server ,ms,写好的数据返回给前端,这样前端后端各自开发各自的,完全分离
前端直接和MS进行通信,假数据拿到了,可以用react把数据填充起来
在这里插入图片描述
前后端分离,就要中间传无格式数据(格式就需要前端人员开发,纯粹html,+css+js写的框架,需要发起一个个url的http请求,请求到后端,由server去查数据回来,将数据直接返回给前端,前端只要把数据拿到,用nodejs填充到表格里就行)
先要是吧数据和模版混成一个大字符串返回给客户端的,这是两套开发方式

现在要把耦合降到最低,就没有模版了,中间就需要定义json格式

在这里插入图片描述
restful是定义数据接口传输的风格,用的三种传输方式的第三种,第一种get,第二种post,第三种是url也带着信息。
url的信息+方法,组合起来就是restful风格

在这里插入图片描述
项目管理上建议每个项目都形成一个接口文档,不管是不是敏捷开发

整个过程采用异步的过程,浏览器用ajax发送异步的请求,然后提交json数据,处理完之后,返回json数据过去,整个过程中间,数据不带格式
在这里插入图片描述
SPA是单页面,一套模版可以弄完,只不过一套模版有单调,模版需要在前端做,不需要再后端做,前后端分离就不需要在后端做了

在这里插入图片描述接口已经设计好了,注册调用跟下d /user/reg,采用POST方式,提交JSON格式。现在restful风格必须定义这种格式,传的什么url,什么方式,什么参数,没个参数什么意思,都要规定下来在这里插入图片描述
现在restful风格必须定义这种格式,传的什么url,什么方式,什么参数,没个参数什么意思,都要规定下来

现在做路由配置,用render就需要模版,但是这里不要render,这里采用前后端分离,就不需要提供模版
在这里插入图片描述
就找django和http相关的,纯json即可
在这里插入图片描述
现在只是做了view
在这里插入图片描述
如何访问,还需要配置urls,定义好views视图,如果让用户看到还需要配置url路由
在这里插入图片描述
在这里插入图片描述
现在返回的response就是json,10个字符长度
在这里插入图片描述
但是这个urls是全局的,如果有100多个路由,那么这个url里的partterns就会有很多,就不太好
在这里插入图片描述
在应用user里,创建一个urls.py
在这里插入图片描述
之前settings配置的入口是blog.urls,这样就不认识应用下的urls了在这里插入图片描述
实际上可以用include

在这里插入图片描述
配置文件里有include

在这里插入图片描述
试试现在映射关系写
在这里插入图片描述
应该写include

在这里插入图片描述
但是include不是这么用的
在这里插入图片描述
这里的意思是只要是user/开头的,都扔到user.urls里来在这里插入图片描述
到user下的urls里,要求是以reg开头reg结尾,跟reg函数映射
在这里插入图片描述
路由配置的几项
在这里插入图片描述
只要匹配到user/开头的,都传给user.urls
在这里插入图片描述
user下的urls配置的是reg开头和结尾的,就跟reg函数映射起来,每次匹配进去,就把匹配到的剥掉了,只匹配剩余部分,这样就建立器一种多级的匹配。
现在就发现blog.urls下的文件是每个业务入口的匹配,每个业务的匹配应该交给每个业务的urls映射文件

在这里插入图片描述
试试这样能否使用

在这里插入图片描述
在这里插入图片描述
改一下views

在这里插入图片描述
这里就发生了变化,说明路径配置正确
在这里插入图片描述

用url来做模式匹配,当模式符合的时候可以跟函数,可以跟函数下的方法,我们自己也可以用include(包名.模块名),urls.py是模块,
在这里插入图片描述
user开头的,一旦匹配到,就把匹配的部分去掉了,剩下的跟这个指向的模块对应起来
在这里插入图片描述
相当于选中这部分已经去掉了
在这里插入图片描述
下面剩下匹配的就只有reg了,符合条件就可以调用reg函数了

在这里插入图片描述
必须写urlpatterns
在这里插入图片描述
选中部分必须写映射的列表

在这里插入图片描述
url来自哪里就来自哪里
在这里插入图片描述
与什么函数建立关系
在这里插入图片描述
两种方式,要么在这里建立映射,要么使用刚才的多级关系,开发中更常用多级的方式,否则全局的urls太多内容,每个应用都应该建立自己的urls映射关系

在这里插入图片描述

include写的应用就是包,项目根目录哪些user就是包
在这里插入图片描述
url函数,如果第二个不是可调用对象
在这里插入图片描述
如果不是可调用对象,可以是元组,可以是列表,include函数会返回一个三元组
在这里插入图片描述
所以url第二个参数里做了很多事情,做了很多判断
在这里插入图片描述
重要的是,不管接收什么参数,会将已经匹配到的部分摘除,送到下一级进行匹配

在这里插入图片描述
在这里插入图片描述
下面开始要解决视图的问题,现在reg函数要更加完善,要完成注册,提交数据完成解析,检查数据是否错误,最后将数据存储到数据库,告诉用户注册成功
在这里插入图片描述
在postman里去做,用json的方式完成提交数据
在这里插入图片描述
数据发送过去又posts了,还是应该先把settings里的中间件关掉,提交上来后,再解决跨站欺骗问题CSRF
在这里插入图片描述
要在请求body部分传输数据,用row的方式是最原始的。然后再选择json的方式就可以
在这里插入图片描述
在这里插入图片描述
现在就需要解决业务问题reg,现在打印出来空的信息
在这里插入图片描述
post是表单提交的方式,现在已经不玩这种方式了,现在是json,试试是不是is_ajax
在这里插入图片描述
再发送下数据
在这里插入图片描述
false,代表不用ajax方式,因为不是按这个方式提交的
在这里插入图片描述
这里第一个是来定位的,在页面里定位,就会定位到哪个py文件

在这里插入图片描述
看看request里有什么,选择点击定位

在这里插入图片描述
看看这里提供哪些方法,这里面是能够看到的方法,好像看不到跟头head相关的,有些就需要区基类看看
在这里插入图片描述
这里的body是一个属性,有read方法说明跟socket相关,从数据里读取出来在这里插入图片描述
get和post拿到的内容塞到了里面去了,meat,path,method,最重要的几个都在了,meta就是header在这里插入图片描述
一个request请求体里是会有body的,看一下这个body

在这里插入图片描述
在这里插入图片描述
拿到了一个bytes
在这里插入图片描述
这些信息通过客户端http协议发到了服务器端,服务器端通过映射映射到了函数中,在函数中拿到了最原始的header,body,然后将head和body通过wsgi的server替我们封装成了environ,将给了application,application就是django,django就是框架,将application得到的environ,重新封装到request对象中,这个request对象的类型是httprequest
在这里插入图片描述
安装一个simple json,json格式比较复杂就用simple json

在这里插入图片描述
现在拿到了数据,准备用simplejson,loads(request.body)
在这里插入图片描述
在这里插入图片描述

打印一下body里的东西
在这里插入图片描述
可以它发什么返回什么

在这里插入图片描述
在这里插入图片描述
是一个字典,有了字典下面就可以使用了
在这里插入图片描述
注册环节相当于insert,要把数据添加到数据库中,就要用到orm的语法,payload如果拿到的是空字典也会出错,所以用try,不能把错误raise出去,给客户端,因为raise了相当于当前线程崩溃了
在这里插入图片描述
应该return一个response对象,在http里看一下
在这里插入图片描述
http里有一大堆东西,notfound 404

在这里插入图片描述
父类是response
在这里插入图片描述
再看一下这个404
在这里插入图片描述
这是异常

在这里插入图片描述
父类response
在这里插入图片描述
response继承base。
在这里插入图片描述
base继承这个
在这里插入图片描述
继承自object,所以不是异常

在这里插入图片描述
不能用404,现在就用badrequest告诉请求是错误的
在这里插入图片描述
但是这么做是错的,这里不能使用raise,异常是要基于baseexception来的,这个现在不是从那里来的,404特殊是基于异常的
在这里插入图片描述
应该这么写
在这里插入图片描述
所有的东西打印一下看看,(用get就不会报错,中括号拿不到就会报错)
在这里插入图片描述
在这里插入图片描述
打印的是邮箱地址和用户名和密码
在这里插入图片描述
类似ORM工具,导入我们写的user类

在这里插入图片描述
在save的时候会做一次提交,可以打印一下问题
在这里插入图片描述

在这里插入图片描述
给用户看的要答非所问,不要暴露内部在这里插入图片描述
raise直接往外抛,下面就可以捕获到,不用写两次

在这里插入图片描述
首先提取出body,约定好用json,如果拿不出来json就报错,特别用中括号,中括号拿不到就会出错
在这里插入图片描述
拿到这三项,填充对象,在这里插入图片描述
填充好后调用save方法,如果提交成功就会自动commit
在这里插入图片描述
也可以这里抛出任何异常都归它管

在这里插入图片描述
这个return写哪里都可以
在这里插入图片描述
sqlalchemy的时候,当我们insert成功,会立即select将这个对象的ID填充好,内部肯定有维护状态,不然怎么知道提交成功与否,所有的orm都是这个样子

在这里插入图片描述
返回1

在这里插入图片描述
成功了
在这里插入图片描述
从这个简单例子,提取了非表单post提交的数据,能用的无非就是get,post,body,如果在url中有查询字符串,依然去get里找,在body里的,就去requestpost里去找
在这里插入图片描述
找到这个数据发现是个字符串,但这个字符串实际上是bytes,现在要用一个json的序列化库,这次用的是simplejson,会把这个bytes的json转换成一个字典,用这个字典提取数据插入到准备好的modle类构造的实例中,最后调用model类实例 的save方法,一旦提交会生成一个id
在这里插入图片描述
在这里插入图片描述
返回的错误要含糊,比如登录失败,一般告诉用户名或者密码错误
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值