Django-路由系统的基本理解
web应用框架的理解: 发电厂 电网 电器 电源模块 ,功能模块
互联网: 传送 数据 信息 —>电网
服务器: -->发电厂
web应用: -->电器
wsgi: -->电器的电源模块,把来自电网不同电压的电流转换成适合的电压的电流
web框架 -->多个web应用的通用框架
1.url的复习
网址 全球统一资源定位符
格式:
http://www.aspxfans.com:8080/nes/index.asp?boardID=5&ID=24618&page=1#name
- 协议:http://
- 域名(ip地址和端口): www.aspxfans.com:8080
- 路径 (路由规则,路由模式) : /news/index.asp
- 参数 :boardID=5&ID=24618&page=1
- 锚点: #name
2.django的路由系统
自定义的路由:
def routers():
urlpatterns = [
('/index',index),
('/login/',login),
]
return urlpatterns
django的路由系统:
当一个请求来到时:
-
首先到项目目录下的urls.py根(URLconf模块)中,查找路由规则
-
根URLconf模块,里面定义了 urlpatterns 变量
-
urlpatterns 是一个(django.urls.path,django.urls.re_path 对象) 列表
-
按顺序运行每个url模式,在第一个匹配的模式停止
-
一旦匹配,django导入并调用给定的视图
-
如果中间出错,或者没有匹配到,则返回404
-path(route, view, kwargs=None, name=None)
-
route 是一个字符串的url规则
-
view 是个视图
-
kwargs 额外参数,传递给view,必须是一个字典
-
name url的命名
-在url中捕获参数
在url规则中中使用/<变量名>’/ 可以捕获url中的值,为字符串%s类型,传递给视图
-路径转换器
/<int: pk>/
在url规则中使用/<数据类型: 变量名>/可以在捕获url中的值时,进行强制类型转换
常用的转换器:
- str: 匹配除了’ /’ 路径分隔符之外的所有字符串
- int: 匹配任意整数
- slug: 匹配任意的ascii码 加上连字符和下划线
- uuid: 格式化的id,百度了解
- path: 匹配任意非空字符
-使用正则表达式 re_path
python中 正则表达式的分组命名 (?< name>pattern)
-django 搜索 url
只搜索路径部分 不搜索域名和参数以及请求方法(get,post) 无关
同一个url 可以匹配get,post
-包含其他URLconfs
include
-传递额外参数
path,re_path 方法中,传递一个kwargs的字典参数
***当kwargs 中的key 与 url捕获中的key 一致的时候, 以kwargs为准
-url 命名
页面重定向 ,跳转页面 ,status:302 :登录之后, 某个操作之后
-app_name
定义在 app directory 的 urlconf模块中
在app的urls.py中写 app_name = app名称
3.模板系统
-模板路径设置
settings.py里面设置路径
-模板设置
app里面的views.py中导入from django.template.loader import get_template
在具体的app方法功能中:
tp = get_template('路径/index.html')
html = tp.render() #进行模板渲染
return HttpResponse(html)
或者 在已经导入的 from django.shortcuts import render,redirect,reverse中
在具体的app方法功能(多用)中:
return render(request,'路径/index.html')
上一篇: Linux下安装完MySQL后找不到my.cnf文件原因
下一篇: 景深(perspective)