Django第三篇

前端反向解析
应用场景:通过访问a路由,到达a的对应视图函数,函数到达对应的前端a标签
a标签的路径是b路由,如果我们在后端改变b路由的路径,那么a标签便无法访问
到b路由,只能手动在前端改变a标签的路径,我们可以给后端的b路由添加一个
name='user'属性值,通过user来绑定路径,我们在前端{% url 'user' %}这样
书写,可以通过user来动态解析后端路径
后端反向解析:
我们需要导一个reverse模块,res=reverse('user') ,user是后端路由的name的值
打印res就是路由的路径,只要通过name的值就可以找到前面的路径。
分组前端反向解析:
前端a标签的路径满足正则表达式就行,前端的代码{% url name属性值 满足正则的值}
记住代码的执行顺序就行,你前端一点a标签,a标签的代码刚好能满足后端的匹配条件
那么肯定能解析出地址
无名分组后端反向解析
res=resvers('name属性值', args(满足正则值,))
print(res)
来动态解析地址,只要能匹配就能解析
有名分组的反向解析
前端:
{% url 1 %}推荐使用(无论有名无名都可以)
{% url year=1 %} 可以使用

后端
res=sevser('add' args=(1,))有名无名都能用(推荐)
res=severs('add' kwargs={year:1}有名用
 
 
有名分组:
用括号将正则括起来,被括号括起来的值会被当成位子实参传给
后面的视图函数的形参,位置传参的特点是一一对应,如果形参为
args,打印出来res则会被元组的形式
有名分组
(?P<year>[0-9]{4})会将year=正则匹配的值当成关键字实参传给后面的函数为形参
关键字传参特点,(year=2019 ,month=12)>>>对应形参必须为(year,month)
且形参调换位置,值不会改变
路由分发:
第一步,创建APP,在不同的app下创建自己的urls
第二步,在项目总路由导一个模块include
第三步,在项目urls写下url(r^app名/', include('app名.urls '))
第四步,去分发的app下的urls文件夹写下url(r^函数名/’,view.函数名)
第五步,去对应的view,写下对应的视图函数
思路:请求先经过总路由匹配,匹配成功后再去对应的app文件下的
urls匹配,匹配成功再执行对应的视图函数,注意不能在总路由加$
 
  
返回前端json格式的数据:
方法一
res={'name':'egon'}
return(json.dumps(res))
方法二
return(JsonResponse(res))
文件上传
联想一下之前的文件上传,还要解决粘包,如今用Django怎么上传?
第一步:得提交文件,用form表单,提交方式POST,enctype=multipart/form-data
第二步:获取文件对象,request.FILES.get(html中的文件名)
第三步:file_obj.name,获取文件名
第三步;打开文件写,至于下载到哪?自己可以配置路径
for line in file_obj:
f.write(line)
 
 
 

猜你喜欢

转载自www.cnblogs.com/jingandyuer/p/10991829.html