Django视图简介
一,視圖函數(shù)介紹
一個(gè)視圖函數(shù),簡(jiǎn)稱(chēng)視圖,是一個(gè)簡(jiǎn)單的Python 函數(shù),它接受Web請(qǐng)求并且返回Web響應(yīng)。響應(yīng)可以是一張網(wǎng)頁(yè)的HTML內(nèi)容,一個(gè)重定向,一個(gè)404錯(cuò)誤,一個(gè)XML文檔,或者一張圖片. . . 是任何東西都可以。無(wú)論視圖本身包含什么邏輯,都要返回響應(yīng)。代碼寫(xiě)在哪里也無(wú)所謂,只要它在你的Python目錄下面。除此之外沒(méi)有更多的要求了——可以說(shuō)“沒(méi)有什么神奇的地方”。為了將代碼放在某處,約定是將視圖放置在項(xiàng)目或應(yīng)用程序目錄中的名為views.py的文件中。
二,三種響應(yīng)形式
1:HttpResponse()
2:render()
render(request, template_name[, context])結(jié)合一個(gè)給定的模板和一個(gè)給定的上下文字典,并返回一個(gè)渲染后的Httpresponse對(duì)象
參數(shù):
request:用于生成響應(yīng)的請(qǐng)求對(duì)象
template_name:要使用的模板完整名稱(chēng),可選得到參數(shù)
context:添加到模板上下文的一個(gè)字典。如果字典中的某一個(gè)值是可調(diào)用的,視圖將在渲染模板之前調(diào)用它。
# render內(nèi)部原理 from django.template import Template,Context def test(request):tmp = Template("<h1>{{ user }}</h1>")con = Context({'user':'jason'})res = tmp.render(con)print(res)return HttpResponse(res)3:redirect(傳遞要重定向的一個(gè)URL)
三,JsonResponse
向前端返回一個(gè)json格式字符串的兩種方式
方式一:
import json data={'name':'lqz','age':18} data1=['lqz','egon'] return HttpResponse(json.dumps(data1))方式二:
from django.http import JsonResponse data = {'name': 'lqz', 'age': 18} data1 = ['lqz', 'egon'] return JsonResponse(data) return JsonResponse(data1,safe=False)四,CBV和FBV
class base view 和 Function base view
from django.views import View class AddPublish(View):def dispatch(self, request, *args, **kwargs):print(request)print(args)print(kwargs)# 可以寫(xiě)類(lèi)似裝飾器的東西,在前后加代碼obj=super().dispatch(request, *args, **kwargs)return objdef get(self,request):return render(request,'index.html')def post(self,request):requestreturn HttpResponse('post')?
五,簡(jiǎn)單文件上傳
form表單上傳文件的注意事項(xiàng),encytpe編碼指定為formdata
def uploadfile(request):if request.method == 'POST':# print(request.FILES)# print(request.FILES.get('myfile'))file_obj = request.FILES.get('myfile')with open(file_obj.name,'wb') as f:for line in file_obj.chunks():# 或者直接對(duì)文件對(duì)象for循環(huán)for line in file_obj f.write(line)return HttpResponse("OK!")return render(request,'index.html')?
轉(zhuǎn)載于:https://www.cnblogs.com/ay742936292/p/10999645.html
總結(jié)
以上是生活随笔為你收集整理的Django视图简介的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: [RN] React Native 实现
- 下一篇: VB6 无法加载ieframe.dll,