![]()
1、路由层
1、路由层简单配置:URL配置就像Django所支撑网站的目录。它的本质是URL与要为该URL调用的视图函数之间的映射表,
你就是以这种方式告诉Django,对于客户端发来的某个URL调用哪段逻辑代码对应执行。
urlpatterns = [
path('admin/', admin.site.urls),
path('login/', views.login),
url(r'^articles/2003/$', views.article_2003),
url(r'^articles/[0-9]{4}/$', views.article_year),
url(r'^articles/(?P<year>[0-9]{4})/$', views.article_year), # 有名分组
#re_path 等同于url,path不能用正则
]
# 注意:视图函数的形参,必须要跟有名分组的名称同名(顺序没有关系)
URL有几个分组,就必须接收几个参数
# URL:自己定制匹配规则
# path:自动带开头和结尾匹配规则,include,自动去掉后面的$,进行URL拼接
# re_path:等同于re_path
2、路由分发
![]()
from django.conf.urls import url # 运用django1版本的URL
from django.urls import path, re_path, include
urlpatterns = [
url(r'^app01/', include("app01.urls")),
url(r'^app02/', include("app02.urls"))
]
#include 包括函数,包括其下级URL
#项目顶级URL,结尾不要加$
#include参数字符串路径,必须要写正确
# 每个APP应用里面新建urls.py 文件
from django.conf.urls import url
from app01 import views
urlpatterns = [
url(r'^login/$', views.login)
]
2、视图层 views
# request 对象
# 1、属性
request.GET #获取以GET请求方式,提交数据
request.GET.get("key") # 推荐写法
request.GET.getlist("key") # 返回一个多值的列表
request.GET["key"] # 不推荐,会报错
request.POST # 获取以POST请求方式提交的数据,得到类似字典(QueryDict)
request.POST.get("key") # 推荐写法
同上
同上
request.body # 请求体相关内容,原生的字节
request.path # 获取URL路径,没有IP和端口
request.method # 获取请求方式,大写
# 2、方法:
get_full_path() # 获取URL的完整路径
is_ajax() # 返回布尔值,判断当前请求是否是ajax
# HTTPResponse 对象
HttpResponse("想要显示的内容") # 直接把内容返回给页面
render(request, "模板名称", [可选参数]) # 把内容及渲染等返回页面
redirect("要跳转的URL地址") # 直接跳转指定地址
3、模板层
# 以下是在HTML 里写,由views return 反射过去
# 变量语法
{{ name }}
# 过滤器 {{obj|filter_name:param}} 模板
{{aaa|default:404}} # 设置默认值,两个参数
length # 获取长度,只需一个参数|前
filesizeformat # 格式化文件尺寸,只需一个参数|前
date:"Y-m-d" # 格式化是日期,一个参数
truncatechars # 截取字符串,两个参数,后面截取长度如果过长默认用...占3个位置
safe # 让字符串变成代码执行
# 标签 以下是在HTML 下编写
for 标签
遍历每个元素,展示数据
if 标签
判断,从而影响,页面展示效果
with 标签
定义一个中间变量
csrf_token 标签
用于跨站请求伪造保护
# 自定义过滤器和标签
# 1. 在settings中的INSTALLED_APPS配置当前app,不然django无法找到自定义的 simple_tag.
# 2. 在app中创建templatetags模块(模块名只能是templatetags)
# 3. 创建任意 .py 文件
# 4. 在使用自定义simple_tag和filter的html文件中导入之前创建的 my_tags.py
# 5. 如何使用
{% load my_tags %}
{% load my_tags %}
{{ li.0|filter_multi:li.1 }}
{% simple_tag_multi li.0 li.1 v3=li.2 %}
<p>{% my_input 3 "aaa" %}</p>
# 注意:filter可以用在if等语句后,simple_tag不可以
# 薄弱