奇酷教育-Python培训|UI培训|WEB大前端培训|Unity3D培训|HTML5培训|人工智能培训|JAVA开发的教育品牌

您現在所在的位置:首頁 >學習資源 > Python全棧+人工智能入門教材 > Python基礎入門教程72:實現視圖

Python基礎入門教程72:實現視圖

來源:奇酷教育 發表于:

實現視圖視圖是一個簡單的 Python 方法,它接受一個請求對象,負責實現:任何業務邏輯(直接或間接)上下文字典,它包含模板數據使用一個

實現視圖

視圖是一個簡單的 Python 方法,它接受一個請求對象,負責實現:

  • 任何業務邏輯(直接或間接)
  • 上下文字典,它包含模板數據
  • 使用一個上下文來表示模板
  • 響應對象,它將所表示的結果返回到這個框架中

在 Django 中,當一個 URL 被請求時,所調用的 Python 方法稱為一個視圖(view),這個視圖所加載并呈現的頁面稱為模板(template)。由于這個原因,Django 小組將 Django 稱為一個 MVT(model-view-template)框架。另一方面,TurboGears 把自己的方法稱作控制器(controller),將所呈現的模板稱為視圖(view),因此縮寫也是 MVC。其區別在于廣義的語義,因為它們所實現的內容是相同的。

最簡單的視圖可能會返回一個使用字符串初始化過的 HttpResponse 對象。創建下面的方法,并生成一個 /jobs HTTP 請求,以確保 urls.py 和 views.py 文件都已經正確設置。

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

下面的代碼將獲取最近的 10 個職位,并通過一個模板呈現出來,然后返回響應。沒有 下一節 中的模板文件,這段代碼就無法 正常工作。

清單 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 字符串進行命名的。該模板是使用名為 object_list的職位列表的上下文呈現的。所呈現的模板字符串隨后被傳遞到 HTTPResponse 構造器中,后者通過這個框架被發送回請求客戶機那里。

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

清單 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 作為一個參數。這是前面提到過的 jobs urls.py 文件中 /jobs/ URL 路徑后面的數字。它以后會作為主鍵(pk)傳遞給 get_object_or_404 方法。

上面的視圖仍然會失敗,因為它們所加載和呈現的模板(jobs/job_list.html and jobs/job_detail.html)不存在。

主站蜘蛛池模板: 不锈钢反应釜,不锈钢反应釜厂家-价格-威海鑫泰化工机械有限公司 不干胶标签-不干胶贴纸-不干胶标签定制-不干胶标签印刷厂-弗雷曼纸业(苏州)有限公司 | 自动售货机_无人售货机_专业的自动售货机运营商_免费投放售货机-广州富宏主官网 | 螺旋压榨机-刮泥机-潜水搅拌机-电动泥斗-潜水推流器-南京格林兰环保设备有限公司 | 台式恒温摇床价格_大容量恒温摇床厂家-上海量壹科学仪器有限公司 | 合肥活动房_安徽活动板房_集成打包箱房厂家-安徽玉强钢结构集成房屋有限公司 | 固诺家居-全屋定制十大品牌_整体衣柜木门橱柜招商加盟 | 无线讲解器-导游讲解器-自助讲解器-分区讲解系统 品牌生产厂家[鹰米讲解-合肥市徽马信息科技有限公司] | 螺旋叶片_螺旋叶片成型机_绞龙叶片_莱州源泽机械制造有限公司 | 耙式干燥机_真空耙式干燥机厂家-无锡鹏茂化工装备有限公司 | 机械立体车库租赁_立体停车设备出租_智能停车场厂家_春华起重 | 新中天检测有限公司青岛分公司-山东|菏泽|济南|潍坊|泰安防雷检测验收 | MTK核心板|MTK开发板|MTK模块|4G核心板|4G模块|5G核心板|5G模块|安卓核心板|安卓模块|高通核心板-深圳市新移科技有限公司 | 黄石妇科医院_黄石东方女子医院_黄石东方妇产医院怎么样 | 欧洲MV日韩MV国产_人妻无码一区二区三区免费_少妇被 到高潮喷出白浆av_精品少妇自慰到喷水AV网站 | 安徽合肥项目申报咨询公司_安徽合肥高新企业项目申报_安徽省科技项目申报代理 | 熔体泵_熔体出料泵_高温熔体泵-郑州海科熔体泵有限公司 | 12cr1mov无缝钢管切割-15crmog无缝钢管切割-40cr无缝钢管切割-42crmo无缝钢管切割-Q345B无缝钢管切割-45#无缝钢管切割 - 聊城宽达钢管有限公司 | 管家婆-管家婆软件-管家婆辉煌-管家婆进销存-管家婆工贸ERP | 手术室净化厂家_成都实验室装修公司_无尘车间施工单位_洁净室工程建设团队-四川华锐16年行业经验 | 安徽免检低氮锅炉_合肥燃油锅炉_安徽蒸汽发生器_合肥燃气锅炉-合肥扬诺锅炉有限公司 | 下水道疏通_管道疏通_马桶疏通_附近疏通电话- 立刻通 | 湖南自考_湖南自学考试| 空气能暖气片,暖气片厂家,山东暖气片,临沂暖气片-临沂永超暖通设备有限公司 | 气体检测仪-氢气检测仪-可燃气体传感器-恶臭电子鼻-深国安电子 | 成都亚克力制品,PVC板,双色板雕刻加工,亚克力门牌,亚克力标牌,水晶字雕刻制作-零贰捌广告 | 反渗透水处理设备|工业零排放|水厂设备|软化水设备|海南净水设备--海南水处理设备厂家 | 挤出机_橡胶挤出机_塑料挤出机_胶片冷却机-河北伟源橡塑设备有限公司 | 本安接线盒-本安电路用接线盒-本安分线盒-矿用电话接线盒-JHH生产厂家-宁波龙亿电子科技有限公司 | 华东师范大学在职研究生招生网_在职研究生招生联展网 | 重庆中专|职高|技校招生-重庆中专招生网 | 武汉画册印刷厂家-企业画册印刷-画册设计印刷制作-宣传画册印刷公司 - 武汉泽雅印刷厂 | 必胜高考网_全国高考备考和志愿填报信息平台 | CCC验厂-家用电器|服务器CCC认证咨询-奥测世纪 | 翰墨AI智能写作助手官网_人工智能问答在线AI写作免费一键生成 | 亿立分板机_曲线_锯片式_走刀_在线式全自动_铣刀_在线V槽分板机-杭州亿协智能装备有限公司 | 联系我们-腾龙公司上分客服微信19116098882 | 振动筛-交叉筛-螺旋筛-滚轴筛-正弦筛-方形摇摆筛「新乡振动筛厂家」 | 硫化罐_蒸汽硫化罐_大型硫化罐-山东鑫泰鑫智能装备有限公司 | 美国HASKEL增压泵-伊莱科elettrotec流量开关-上海方未机械设备有限公司 | 小型高低温循环试验箱-可程式高低温湿热交变试验箱-东莞市拓德环境测试设备有限公司 | 手持气象站_便携式气象站_农业气象站_负氧离子监测站-山东万象环境 |