Django 视图
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Django 视图,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1928字,纯文字阅读大概需要3分钟。
内容图文
三板斧本质
django视图函数必须要返回一个HttpResponse对象
render、redirect内部是继承了HttpRespone类
JsonResponse
需求:给前端返回json格式数据
方式1:自己序列化
res = json.dumps(d,ensure_ascii=False)
return HttpResponse(res)
方式2:JsonResponse
from django.http import JsonResponse
def func1(request):
d = {‘user‘:‘a‘,‘password‘:123}
return JsonResponse(d)
ps:额外参数补充
json_dumps_params={‘ensure_ascii‘:False} # 返回值取消转义
safe=False # 允许输入除字典外的数据类型
# JsonResponse返回的也是HttpResponse对象
FBV与CBV
FBV
基于函数的视图
CBV
基于类的视图
# CBV基本使用
# view.py:
from django.views import View
class MyView(View):
def get(self,request):
return HttpResponse("get方法")
def post(self,request):
return HttpResponse("post方法")
# urls.py:
url(r‘^func‘,views.MyView.as_view())
"""为什么能够自动根据请求方法的不同执行不同的方法"""
1.突破口
as_view()
2.CBV与FBV路由匹配本质
url(r‘^func4‘,views.MyView.as_view())
# 等价 CBV路由配置本质跟FBV一样
url(r‘^func4‘,views.view)
3.源码
def as_view(cls, **initkwargs):
def view(request, *args, **kwargs):
self = cls(**initkwargs) # self = MyView() 生成一个我们自己写的类的对象
return self.dispatch(request, *args, **kwargs)
return view
def dispatch(self, request, *args, **kwargs):
# 获取当前请求并判断是否属于正常的请求(8个)
if request.method.lower() in self.http_method_names:
# get请求 getattr(对象,‘get‘) handler = 我们自己写的get方法
handler = getattr(self, request.method.lower(), self.http_method_not_allowed)
else:
handler = self.http_method_not_allowed
return handler(request, *args, **kwargs) # 执行我们写的get方法并返回该方法的返回值
cbv加装饰器
# cbv加装饰器可以加在类上:
@method_decorator(auth,name=‘get‘) #给get请求加装饰器
# 可以加在方法上
@method_decorator(auth)
def get(self, request, *args, **kwargs):
pass
form表单上传文件
form表单上传文件注意事项
1.method必须是post
2.enctype参数修改为multipart/form-data
def func(request):
if request.method == ‘POST‘:
print(request.POST)
file_obj = request.FILES.get(‘myfile‘)
print(file_obj.name) # 获取文件名称
with open(r‘%s‘%file_obj.name,‘wb‘) as f:
for chunks in file_obj.chunks():
f.write(chunks)
return render(request,‘func.html‘)
原文:https://www.cnblogs.com/shof/p/14646840.html
内容总结
以上是互联网集市为您收集整理的Django 视图全部内容,希望文章能够帮你解决Django 视图所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。