day63日考
考题
今日考题
1.反向解析的本质是什么,无名和有名反向解析如何操作?
2..路由分发能够实现的前提是什么,需要注意什么,名称空间什么时候使用
3..什么是虚拟环境,django1.X与django2.X/3.X的区别有哪些
4.诠释为何跨语言传输数据以json格式为主,django返回json格式数据方式有哪些,又有哪些注意事项和配置参数
1.反向解析的本质是什么,无名和有名反向解析如何操作?
反向解析的本质:通过一些方法可以获得一个结果,该结果可以访问到对应的URL,从而触发视图函数的运行。
无名分组的反向解析:
views.py
from django.shortcuts import reverse
from django.shortcuts import redirect
def home(request):
return redirect(reverse('app01:index',args(1,)))
index.html
<form action="{% url 'app01:index' 1 %}" method="post">
...
</form>
有名分组的反向解析
views.py
from django.shortcuts import reverse
from django shortcuts import redirect
def home(request):
return redirect(reverse('app01:index',kwargs={'id':1}))
index.html
<form action="{% url 'app01:index' id=1 %}" method="post">
...
</form>
2.路由分发能够实现的前提是什么,需要注意什么,名称空间什么时候使用。
django的每一个应用都可以有自己的templates文件夹 urls.py static文件夹
当分组的别名存在重复的时候,可以使用名称空间加以区别
from django.conf.urls import url, include
url(r'^app01/',include(('app01.urls','app01')))
url(r'^app02/',include(('app02.urls','app02')))
3.什么是虚拟环境,django1.X与django2.X/3.X的区别有哪些
"""
在正常开发中,我们会给每一个项目配备一个该项目独有的解释器环境
该环境内只有该项目用到的模块,用不到一概不装
"""
前端 后端
JSON.stringify() json.dumps()
JSON.parse() json.loads()
(1)路由层使用的方法不同
django 1.x 使用的url正则匹配路径,django 2.x和django3.x使用的path来匹配路径,同时也提供了re_path来正则匹配路径
path主要是为了解决url匹配路径存在的数据类型转换与匹配规则冗余的问题,它内部支持五种转换器,同时也支持自定义转换器。
path('index/<int:id>/',index)
str,匹配除了路径分隔符(/)之外的非空字符串,这是默认的形式
int,匹配正整数,包含0。
slug,匹配字母、数字以及横杠、下划线组成的字符串。
uuid,匹配格式化的uuid,如 075194d3-6885-417e-a8a8-6c931e272f00。
path,匹配任何非空字符串,包含了路径分隔符(/)(不能用?)
4.诠释为何跨语言传输数据以json格式为主,django返回json格式数据方式有哪些,又有哪些注意事项和配置参数
答:因为各个语言的数据类型是不一致,需要一个标准的格式,json格式可以完美地承担前后端数据传输的中转站,实现矿语言的传输。
字典类型的数据
from django.http import JsonResponse
def index(request):
user_dic = {'name':'egon','age':'70','hobby':'喝茶'}
return JsonResponse(user_dic,jsom_dumps_params={'ensure_ascii':False})
JsonResponse是一个继承于HttpResponse的类,内部调用了json.dumps来完成数据类型的序列化,通过json_dumps_params参数来控制显示的中文是否是unicode编码格式
data = json.dumps(data, cls=encoder, **json_dumps_params)
非字典类型的数据
In order to allow non-dict objects to be serialized set the '
'safe parameter to False.'
def test(request):
user_list = ['姜春','王XX','李XX']
return JsonResponse(user_list,safe=False,jsom_dumps_params={'ensure_ascii':False})