Django视图层

视图层

FBV与CBV

FBV:基于函数的视图

CBV:基于类的视图

CBV

urlpatterns = [
	url(r'^mycls/',view,MyCls.as_view()), 
	# 等价于url(r'^mycls/',view,MyCls.view)
]

无论是FBV还是CBV路由层都是路由对应视图函数内存地址
from django.views import View

class MyCls(View):
    def get(self,request):
        return render(request,'index.html')
    def post(self,request):
        return HttpResponse('post')

url匹配上时,视图类方法如何执行:


通过反射,取到对应请求方式的方法,执行后返回

JsonResponse

from django.http import JsonResponse
def index(request):
	# res = {'name':'Jason大帅比','password':18}
	# return HttpResponse(json.dumps(res))
	return JsonResponse({'name':'Ja大帅比','password':'1888888'},json_dumps_params={'ensure_ascii':False})
# ensure_ascii参数取False不会将中文自动转换

简单的文件上传

前端需要注意的点:

  1. method需要制定为POST
  2. enctype需要改为formdata格式

后端暂时需要注意的点:

  1. 配置文件中注释掉csrfmiddleware中间件
  2. 通过request.FILES获取用户上传的post文件数据
file_obj = request.FILES.get('my_file')
print(file_obj.name) # 文件名
with open(file_obj.name,'wb') as f:
    for line in file_obj.chunks(): # chunks()会使有游标回到0位置
        f.write(line)
posted @ 2019-06-10 19:12  Lip&Hip  阅读(212)  评论(0编辑  收藏  举报