Django基础轮廓
MTV+controller
一 url分发系统:
1 简单使用
url(r'^articles/2003/$', views.special_case_2003), # special_case_2003(request) url(r'^articles/(\d{4})/$', views.year_archive), # year_archive(request,1999) url(r'^articles/(\d{4})/(\d+)$', views.month_archive), # month_archive(request,1999,12)
2 有名分组
url(r'^articles/(?P<y>\d{4})/(?P<m>\d+)$', views.month_archive2),
# month_archive(request,y=1999,m=12)
3 分发include
url('app/', include('app.urls')),
4 反向解析
(1)在模板: {% url '别名' %}
(2)在py文件中: _url=reverse("index")
二、视图函数
浏览器 ---------- 服务器 ''' 请求首行 请求头 空格 请求体(post) # user=yuan&pwd=123 '''
1、请求对象request
# request;请求信息对象 print(request.method) print(request.path) print(request.GET) print(request.POST) # {"user":"yuan","pwd":123} print(request.body) # 请求体原生数据 " user=yuan&pwd=123" print(request.META) print(request.get_full_path()) #路径+请求数据 print(request.is_ajax())
2、响应对象
1 Httpresponse("OK") 2 render(request,"index.html") (1) 找文件,读文件 (2) 渲染文件:将模板文件中的所有{{}},{%%}替换成标签 3 重定向 redirect (1)浏览器发送一个post请求; (2)请求通过了,服务器发送一个301或者302状态码和location:新路径给浏览器; (3)接收到301或者302状态码,解读响应体中的location的值,携带此路径再一次访问服务器; (4)服务器再一次接受到路径,将路径对应的数据打包好,传送给浏览器渲染。
三、模板语法
1 渲染变量 {{val}}
(1) 深度查询 {{val.}} (2) 过滤器 {{val|filter_name:参数}} {{now|date:"Y-m-d"}} 常用过滤器: add date default lenth slice safe filesizeformat
2 渲染标签 {%%}
{%for i in val%}
{%endfor%}
{%if %}
{%endif%}
{%csrftoken%}
3、自定义标签和过滤器
1、在settings中的INSTALLED_APPS配置当前app; 2、在app中创建templatetags模块; 3、创建任意 .py 文件,如:my_tags.py; 4、编写代码
from django import template from django.utils.safestring import mark_safe register = template.Library() #register的名字是固定的,不可改变 @register.filter def filter_multi(v1,v2): return v1 * v2 @register.simple_tag def simple_tag_multi(v1,v2): return v1 * v2
5、使用的时候导入自定义模板和标签文件
{% load 文件名 %}
6、使用simple_tag和filter(如何调用)
{{num|filter_multi:2 }} #24 其中num=12