目录
导入 from django.http import JsonResponse
默认返回字典,通过safe=false返回类表,其他类型
出现乱码通过字典参数形式传递json_dump_encode={"ensure_ascii": True}
底层实现的json模块
实现前后端分离
后端给前端返回一个json格式的字段穿
json.dumps(data, clas=自定义类名(可以实现其他序列化), ensure_ascii=False)
1.自定义类并集成views
2.配置url(‘^$‘, views.MyCbv.as_views()), as_views是类的绑定方法,当程序启动时,实际访问的地址是views.view,
3.当浏览器方式请求,进入url中寻找对应的请求方式,view()方法中执行一些操作之后,return 调用dispathch方法,在查找
dispathch方法时候,注意属性和方法的查找顺序
4.在dispath方法中判断,当前的请求方式是否在八大请求之中,如果在则通过反射机制,到自定义类中去映射对应的方法,若映射不到
则会报错,如果请求方式不再八大请求方式中,则会报错,如果请求方式不再八大请求方式中,则会报错,如果请求方式不再八大请求方式中,则会报错,如果请求方式不再八大请求方式中,则
5.执行反射获取到自定义类中的方法
实现原理有Django有两个配置文件,一个是用户可以修改,一个用户不可以修改,通过用户修改的方式覆盖底层配置,底层通过先读取django没有暴露的配置文件进行保存setattr方法,在查询用户配置settings.py文件,然后覆盖默认底层配置文件
{{}} 变量相关
{%%}逻辑相关
if 条件:{% if %} ... {% elif %} .... {%else%} .... {%endif%}
for循环:{% for %}(支持字典,列表,items,keys,values)
? .....
? {{forloop}}
? fist
? last
? counter
? counter0
? empty
? {% ednfor %}
with 起别名: {% with .... as 名字%} {% endwith %}
在应用下创建一个templatetags文件夹,名字必须是这个名字
在文件夹中创建任意.py文件
在py文件中写入固定两行代码
from django.template import Library
register = Library() # register名字必须是这个
# 自定义过滤器
# 自定义过滤器
@register.filter(name='my_add')
def my_add(a, b):
return a + b
# 自定义标签
@register.simple_tag(name='my_list')
def my_list(a, b, c, d):
return f'[{a},{b},{c},{d}]'
区别 标签不能再if中使用
{% if 0|myplus:123 %} 可以用
<p>有值</p>
{% endif %}
{% if mysm 1 2 3 4 %} 不能用
<p>有值</p>
{% endif %}
事先需要再模板中 通过block划定区域
一个页面上 block块越多 页面的扩展性越高,通常情况下 都应该有三片区域
{% block css %}
{% endblock %}
{% block content %}
{% endblock %}
{% block js %}
{% endblock %}
子板中还可以通过:{{ block.super }} 来继续使用母版的内容
当你写了一个特别好看的form表单 你想再多个页面上都使用这个form表单,你就可以将你写的form表单当作模块的形式导入 导入过来之后 就可以直接展示
{% include ‘good_page.html‘ %}
原文:https://www.cnblogs.com/randysun/p/11746867.html