国产成+人+综合+亚洲 欧美-国产成+人+综合+亚洲专-国产成+人欧美+综合在线观看-国产成a人片在线观看视频-国产成a人片在线观看视频99-国产成a人片在线观看视频下载

您現(xiàn)在所在的位置:首頁 >學(xué)習(xí)資源 > Python全棧+人工智能入門教材 > Python基礎(chǔ)入門教程72:實(shí)現(xiàn)視圖

Python基礎(chǔ)入門教程72:實(shí)現(xiàn)視圖

來源:奇酷教育 發(fā)表于:

實(shí)現(xiàn)視圖視圖是一個(gè)簡(jiǎn)單的 Python 方法,它接受一個(gè)請(qǐng)求對(duì)象,負(fù)責(zé)實(shí)現(xiàn):任何業(yè)務(wù)邏輯(直接或間接)上下文字典,它包含模板數(shù)據(jù)使用一個(gè)

實(shí)現(xiàn)視圖

視圖是一個(gè)簡(jiǎn)單的 Python 方法,它接受一個(gè)請(qǐng)求對(duì)象,負(fù)責(zé)實(shí)現(xiàn):

  • 任何業(yè)務(wù)邏輯(直接或間接)
  • 上下文字典,它包含模板數(shù)據(jù)
  • 使用一個(gè)上下文來表示模板
  • 響應(yīng)對(duì)象,它將所表示的結(jié)果返回到這個(gè)框架中

在 Django 中,當(dāng)一個(gè) URL 被請(qǐng)求時(shí),所調(diào)用的 Python 方法稱為一個(gè)視圖(view),這個(gè)視圖所加載并呈現(xiàn)的頁面稱為模板(template)。由于這個(gè)原因,Django 小組將 Django 稱為一個(gè) MVT(model-view-template)框架。另一方面,TurboGears 把自己的方法稱作控制器(controller),將所呈現(xiàn)的模板稱為視圖(view),因此縮寫也是 MVC。其區(qū)別在于廣義的語義,因?yàn)樗鼈兯鶎?shí)現(xiàn)的內(nèi)容是相同的。

最簡(jiǎn)單的視圖可能會(huì)返回一個(gè)使用字符串初始化過的 HttpResponse 對(duì)象。創(chuàng)建下面的方法,并生成一個(gè) /jobs HTTP 請(qǐng)求,以確保 urls.py 和 views.py 文件都已經(jīng)正確設(shè)置。

清單 25. jobs/views.py (v1)
1
2
3
4
from django.utils.httpwrappers import HttpResponse
 
def index(request):
    return HttpResponse("Job Index View")

下面的代碼將獲取最近的 10 個(gè)職位,并通過一個(gè)模板呈現(xiàn)出來,然后返回響應(yīng)。沒有 下一節(jié) 中的模板文件,這段代碼就無法 正常工作。

清單 26. jobs/views.py (v2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
from django.template import Context, loader
from django.http import HttpResponse
from jobs.models import Job
 
from django.template import Context, loader
from django.http import HttpResponse
from jobs.models import Job
 
def index(request):
    object_list = Job.objects.order_by('-pub_date')[:10]
    t = loader.get_template('jobs/job_list.html')
    c = Context({
        'object_list': object_list,
    })
    return HttpResponse(t.render(c))

在上面的代碼中,模板是由 jobs/job_list.html 字符串進(jìn)行命名的。該模板是使用名為 object_list的職位列表的上下文呈現(xiàn)的。所呈現(xiàn)的模板字符串隨后被傳遞到 HTTPResponse 構(gòu)造器中,后者通過這個(gè)框架被發(fā)送回請(qǐng)求客戶機(jī)那里。

加載模板、創(chuàng)建內(nèi)容以及返回新響應(yīng)對(duì)象的步驟在下面都被 render_to_response 方法取代了。新增內(nèi)容是詳細(xì)視圖方法使用了一個(gè) get_object_or_404 方法,通過該方法使用所提供的參數(shù)獲取一個(gè) Job 對(duì)象。如果沒有找到這個(gè)對(duì)象,就會(huì)觸發(fā) 404 異常。這兩個(gè)方法減少了很多 Web 應(yīng)用程序中的樣板代碼。

清單 27. jobs/views.py (v3)
1
2
3
4
5
6
7
8
9
10
11
12
from django.shortcuts import get_object_or_404, render_to_response
from jobs.models import Job
 
def index(request):
    object_list = Job.objects.order_by('-pub_date')[:10]
    return render_to_response('jobs/job_list.html',
                              {'object_list': object_list})
 
def detail(request, object_id):
    job = get_object_or_404(Job, pk=object_id)
    return render_to_response('jobs/job_detail.html',
                              {'object': job})

注意,detail 使用 object_id 作為一個(gè)參數(shù)。這是前面提到過的 jobs urls.py 文件中 /jobs/ URL 路徑后面的數(shù)字。它以后會(huì)作為主鍵(pk)傳遞給 get_object_or_404 方法。

上面的視圖仍然會(huì)失敗,因?yàn)樗鼈兯虞d和呈現(xiàn)的模板(jobs/job_list.html and jobs/job_detail.html)不存在。

主站蜘蛛池模板: 国产成人理在线观看视频 | 日韩大乳视频中文字幕 | 老司机午夜精品视频在线观看免费 | 久久国产经典视频 | 色视频一区二区三区 | 日韩欧美精品中文字幕 | fxxxx性欧美高清 | 日韩欧美一二三区 | 久久午夜精品 | 青青草免费在线视频 | 成人免费毛片观看 | 又粗又大的机巴好爽视频视频 | 亚洲欧美中文日韩综合 | 香蕉视频在线观看国产 | 日本一区二区三区在线观看 | 成人中文字幕一区二区三区 | 欧美一级毛片久久精品 | 久久国产中文字幕 | 涩涩色视频在线播放 | 在线成人免费观看国产精品 | 久久综合综合久久狠狠狠97色 | 国产青色| 日韩一区在线视频 | 美国毛片免费观看 | 一级毛片一级毛片一级毛片aa | 一级毛片欧美一级日韩黄 | 精品国产线拍大陆久久尤物 | 日本不卡视频免费 | 欧美日韩黄色大片 | 日韩高清一区二区三区不卡 | 成人精品一区二区三区中文字幕 | 婷婷夜夜躁天天躁人人躁 | 国产精品免费看久久久香蕉 | 天天操夜夜骑 | 精品伊人久久大香线蕉网站 | 激情一区二区三区 | 中文在线播放 | 婷婷五月在线视频 | 亚洲国产欧美在线不卡中文 | 人人操天天射 | 一级毛片在线看 |