day63日考

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})
原文地址:https://www.cnblogs.com/surpass123/p/12984892.html