巨蟒python全栈开发django4:url反向解析图解&&模板渲染
第一部分:
1.(1)知识点回顾:
django回顾:
()下载安装
输入网址,a,form表单get post,爬虫
(请求)==>django项目服务端的url(r"index/",views.index,),
先匹配,再加工成httprequest对象,再给views.index
(响应)==>def index(request):
return Httpresponse('hello')
return render(request,'index.html',{'name':'xxx'}) #字符串替换
return redirect('/login/') #redirect最终也是httpresponse,响应行+状态码是30X
#相对路径就是自己的项目的路径,ip+端口 ==>这里边有三个对象:Httpresponse(字符串),render(返回页面),redirect(重定向)
//(render&&request都可以用)
==>def login(request):
return Httpresponse('hello')
return render(request,'login.html')#django觉得你会用到login.html
return redirect('/login/') #只是返回一次
network是用来监听网络请求和响应信息的
重定向,就是两次请求,两次响应.
前三节回顾
(2).重定向只是返回一个url
重定向,接收到了这个request东西,但是没有用request.
render中request会用到,也是接收到了request.看着没有用实际上用到了,用到了再说.
不要看源码,源码的难度太高.(各种调用,各种多重继承,继承的规则编程MRO了)
这个地方硬编码写死了action='/login/'
运行结果:
1.url反向解析图解
起别名
我们将上边的内容起了一个别名.
通过模板渲染写,得到结果:
#修改urls.py文件
输入地址:
回车:(这时候我们找不到页面了)
输入下面的地址就可以得到结果了,这是因为写死了这个页面,因此,我们可以在视图这里也进行反向解析
起别名:
运行:(跳转之后打印的,浏览器现在的结果无所谓)
服务端打印的结果,转换成这个路径了.也就是翻转路径了
路径分组,匹配两个数字,
通过路径/new_base/,找到函数,需要添加一个参数,获取参数n,起别名'bbb'
运行结果如下:
运行结果:
反向解析跳转的路径:
将上边的args中的参数1,改成参数2
反向解析补充
运行,得到结果:
添加login页面和函数
运行,得到如下结果:
随便输入,用户名和密码,报错
中间件,禁止访问.,需要将中间件的第四个注销掉.
这样,再运行,随便输入用户和密码,结果又返回这个页面:
从login.html中,我们知道这是一个post提交方式:
修改,第一次请求的目的是login页面,第二次请求到index页面
运行,
输入用户和密码,回车,得到下面的结果:
在urls.py中,修改名字为如下:
运行,
随便,输入用户和密码:这时候跳转不到下一个界面了,这时候我们需要修改别名
这就是硬编码的缺点,在修改urls.py文件中的路径的同时,还需要修改views.py文件里的路径,这就是写死了
django提供了一个反向解析的功能,也就是起别名.
测试打印出来的url
运行
结果:
服务端得到的结果,也就是起的别名,通过别名知道修改之后的路径/new_index/
修改:
运行:
随便输入地址和密码:提交得到如下结果
服务端得到反向解析得到的路径
修改如下:
我们只需要修改,将url放在反向解析的地址里就可以在剾解析了
运行:
随便输入用户名和密码,提交得到结果:
修改:
运行:
随便输入用户和密码,
这就是通过动态解析,拿到的url
运行:登录函数发生了变化:显示下面的跳转函数没有变化
输入用户和密码,提交,找不到url,
因此,我们需要起别名,给new_login地址,起login别名
运行,输入地址,这样就得到了下面这个页面.下面的表单名字也自动发生了变化.
只需要修改正则匹配的路径一个就可以了,输入网址也需要和修改的正则一致.
需求:访问index,列举出有几页文章.
在上边的index.html页面一点击,第n页,就会访问articles的各个文章,走urls.py里的文章对应关系路径
然后在views.py所有页面的文章.返回所有文章
新建articles.html文章
再找url的别名,通过index页面
运行,反向解析的页面.
点击第123页都是'hello'
需求,点击第1页,显示第1页内容,点击第2页,显示第2页内容
思考,如何区分?
通过urls.py访问参数进行区分
运行结果:
需求,如何区分第几页所有的文章,应该作为一个参数??通过传参
通过page_number进行返回文章.
运行得到的结果:
目前的问题,不是输入网址,而是变成点击事件,
报错.通过urls.py里的 ^articles/(\d{1}),找到所有文章,这时候,index.html少东西,也就是少参数,不知道参数到底是什么
(\d{1})也就是传递给函数的参数,这个也就是动态参数
反向解析,通过下面的形式给参数.
运行:
点击第一页,进入
视图函数传递参数:(相当于拼到自己的路径去)
一定要集中注意力,连贯性很重要.!!!
上边整个是视图函数里的反向解析.下面是HTML里的反向解析
c
2.模板渲染
通过访问base,返回一个页面
运行结果:
locals()是将函数内的所有的变量,作为键值对进行传递.只是测试写,不是建议的方法,查找的东西太多
一堆变量,导致效率低
运行,得到结果:
思考,怎样将lst一个一个拿出来??
运行,循环,得到的结果?
最后有个小点,原因是for循环,后边有个<li></li>标签.
需求:思考怎样拿到类变量???
运行:
运行:
等价于下面的字典方式.
如果不写返回值,只写print
运行:没有返回值,类里边的函数得到的结果就是None.
字典里面的s1值.
运行:得到的结果如下:
查找列表中的第几个值.
python中实例化,调用类里的方法,写法如下
base.html中的类调用方法,类调用变量,都是没有括号的,那么怎样传递参数.
模板语言是不能传递参数的!!!
2-1变量过滤器
# 过滤器写法
{{name|lower:'ABC'}}
将views.py里边的name改成英文的donggua
运行:
将name改成大写
运行:
将列表拼成一项
运行得到结果:
在base中修改
运行:得到结果
如何修改成能看懂的内容:
得到结果:
巨蟒python全栈开发django4:url反向解析图解&&模板渲染的更多相关文章
- 巨蟒python全栈开发django4:url反向解析图解&&模板渲染2
注意:前端有aaa变量,后端没有aaa变量,存在p标签,但是显示不出来 有p标签,我们可以指定默认值,在没有其他内容的时候 过滤器有60多种,有点多,用到的时候再记和查 结果: 显示是acd 看长度 ...
- 巨蟒python全栈开发django3:url&&视图
1.url正则匹配分组和命名分组 2.路由分发 3.url别名和反向解析 4.httprequest和httpresponse的使用 内容回顾: .jinja2(flask框架,没有内置模板对象,需要 ...
- day053 url反向解析图解 模板渲染
一.语法 两种特殊符号(语法): {{ }}和 {% %} 变量相关的用{{}},逻辑相关的用{%%}. 二.变量 1. 可直接用 {{ 变量名 }} (可调用字符串, 数字 ,列表,字典,对象等) ...
- 巨蟒python全栈开发django5:组件&&CBV&FBV&&装饰器&&ORM增删改查
内容回顾: 补充反向解析 Html:{% url ‘别名’ 参数 %} Views:reverse(‘别名’,args=(参数,)) 模板渲染 变量 {{ 变量名 }} 逻辑相关 {% %} 过滤器: ...
- 巨蟒python全栈开发flask2
内容回顾: 上节回顾: Flask .response 三剑客: render_template 模板 redirect 重定向 - URL地址 "" 字符串 HTTPRespon ...
- 巨蟒python全栈开发-第11阶段 ansible_project3
今日大纲: 1.用户创建 2.前端优化 3.用户编辑 4.用户删除 5.ansible api介绍 1.用户创建 新建一个user_create.html的页面 <form class=&quo ...
- 巨蟒python全栈开发django7:多表增加和查询
1.回顾内容&&补充 补充1: 补充2: 这个选择的是第二个解释器. 选择第一个的话,只是针对当前的项目,如果再开新项目的话,需要重新下载安装相关的包. 点击保存,因为我们注释掉了,创 ...
- 巨蟒python全栈开发django2:初识django
今日内容大纲: 1.起飞版web框架 2.自定制框架的流程 3.jinja2模板渲染初识 4.MVC&&MTV 5.django版本介绍及django安装 6.django初识(一些操 ...
- 巨蟒python全栈开发linux之centos6
1.nginx复习 .nginx是什么 nginx是支持反向代理,负载均衡,且可以实现web服务器的软件 在129服务器中查看,我们使用的是淘宝提供的tengine,也是一种nginx服务器 我们下载 ...
随机推荐
- rsync问题-connection refused(111)、Unknown module
1.Connection refused (111) 启动服务:rsync --daemon --config=/etc/rsyncd.conf 2.@ERROR: Unknown module 's ...
- Fiddler-常用技巧
1.详情面板 1).Inspectors 标签栏进行请求和响应结果分析 2).AutoResponder 对匹配 URL 进行自动返回, 可以使用字符.URL.正则表达式 3).Composer 模拟 ...
- WPF入门教程系列四
WPF之Binding的使用(二) 一. 前言 初学WPF经常被Binding搞得苦不堪言,Binding的重用性就不做介绍了,在WPF应用程序开发中Binding是一个非常重要的部分.WPF也是近 ...
- SQL Server事务详解
事务定义: 事务是单个的工作单元.如果某一事务成功,则在该事务中进行的所有数据更改均会提交,成为数据库中的永久组成部分.如果事务遇到错误且必须取消或回滚,则所有数据更改均被清除. 事务三种运行模式: ...
- jquery,js,checkbox多选框复选框取值和赋值
今天一个同事不太会多选框的取值和赋值的问题,我帮他解决了一下,不想自己想的朋友可以参考一下. 获取checkBox的值,checkBox的html如下 <input type=" na ...
- openresty+lua在反向代理服务中的玩法
openresty+lua在反向代理服务中的玩法 phith0n · 2015/06/02 10:35 0x01 起因 几天前学弟给我介绍他用nginx搭建的反代,代理了谷歌和维基百科. 由此我想到了 ...
- JS DOM -- 关于回车键盘事件执行事件
一.需求制作一个模拟对话框, 二. 1.需要发送后,输入框清空 2.按enter键可发送 三.代码部分 <!DOCTYPE HTML> <html> <head> ...
- codeblocks中给GCC编译器加参数
在使用gcc命令行编译的时候可以使用gcc xxx.c -o xxx.exe -std=c99来使用c99标准编译 但是在codeblocks中默认是不使用c99标准编译的,如何加参数呢? Setti ...
- git设置及常用命令
下载 下载地址:https://git-scm.com/downloads windows系统安装 默认安装即可. 其它系统安装方式请自行百度,网上教程很多. 设置 windows桌面右键,选择Git ...
- SharePoint管理中心配置内容数据库
SharePoint管理中心配置内容数据库 在SharePoint2010中,内容数据库是组织数据的核心. 是全部站点内容信息,如文档.列表数据和Web部件属性等存储的地方.默认地,内 ...