日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Django的视图层简介

發布時間:2025/3/15 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Django的视图层简介 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Django的視圖層

視圖函數

所謂視圖函數,其實就是我們Django項目中各個應用中的views.py文件中定義的每個用來處理URL路由映射到這里的邏輯函數。一個視圖函數簡稱視圖,它是個簡單的Python 函數,它接受Web請求并且返回Web響應。響應可以是一張網頁的HTML內容,一個重定向,一個404錯誤,一個XML文檔,或者一張圖片,任何東西都可以。但是需要注意的是,無論視圖本身包含什么邏輯,都要返回響應。
下面是一個返回當前日期和時間作為HTML文檔的視圖:
from django.shortcuts import render, HttpResponse, HttpResponseRedirect, redirect import datetimedef current_datetime(request):now = datetime.datetime.now()html = "<html><body>It is now %s.</body></html>" % nowreturn HttpResponse(html)
在上面的代碼中:
1.首先,我們從django.shortcuts模塊導入了HttpResponse類,以及Python的datetime庫。
2.接著,我們定義了current_datetime函數。它就是視圖函數。每個視圖函數都使用HttpRequest對象作為第一個參數,并且通常稱之為request。但是視圖函數的名稱并不重要;不需要用一個統一的命名方式來命名,以便讓Django識別它。我們將其命名為current_datetime,是因為這個名稱能夠精確地反映出它的功能。
3.這個視圖會返回一個HttpResponse對象,其中包含生成的響應。每個視圖函數都負責返回一個HttpResponse對象。
在視圖層我們需要掌握兩個對象:請求對象(HttpRequest)與響應對象(HttpResponse)。

請求對象

請求對象的常用屬性

django將請求報文中的請求行、首部信息、內容主體封裝成 HttpRequest 類中的屬性。 除了特殊說明的之外,其他均為只讀的。
1.請求方式:request.methon:一般情況下,在瀏覽器的地址欄直接訪問時是GET,用form的submit提交的方式是POST。
2.請求數據:request.GET與request.POST:這兩個方式哪一個有值,完全取決于請求的方式。這里需要注意的是得到的結果是一個“字典”。對于Get請求方式,如果瀏覽器的地址欄輸入的是:http://127.0.0.1:8000/app01/index/?name=whw&age=22,那request.GET得到的結果是{'name':'whw','age':'22'}。而對于POST請求方式,字典的key值是表單中input的name屬性的值,而對應的value是input中用戶輸入的值。
3.請求路徑:request.path:請求路徑的組成是:協議://IP:port/路徑?參數(GET請求數據)。比如說有一個GET請求http://127.0.0.1:8000/app01/index/?name=whw&age=22,那這個請求答應出來的路徑就是/app01/index/。大家不要被后面的迷惑了,因為index后面是"?",我們可以把它看作是路徑與參數的分隔符,所以我們打印路徑的時候是不會打印"?"后面的參數的!

請求對象的常用方法

1.get_full_path()方法:關于這個方法我們需要注意一點就可以了,還拿上面的“請求數據”中的例子來講,如果GET請求方式輸入:http://127.0.0.1:8000/app01/index/?name=whw&age=22。path屬性得出的只是/app01/index/而get_full_path()方法得出的是:/app01/index/?name=whw&age=22
2.is_ajax()方法——判斷請求是不是ajax方法。

響應對象

我們知道,對于任何一個視圖函數必須要返回響應對象,而返回的響應對象主要有三種形式:HttpResponse()、render()、redirect()。另外需要注意的一點是,調用者三個方法前需要先在views.py文件中引入:from django.shortcuts import render,HttpResponse,HttpResponseRedirect,redirect

HttpResponse()

對于HttpResponse(),它比較簡單,因為我們在括號內直接加一個字符串作為響應體就可以了。我們可以拿上面的“返回當前日期和時間作為HTML文檔”的例子作為參考。

render()

render()是一個很重要的方法。它的作用是將一個模板頁面中的模板語法進行渲染,最終渲染成一個html頁面作為響應體返回給用戶。
render()的語法是:render(request, template_name[, context])。合一個給定的模板和一個給定的上下文字典,并返回一個渲染后的HttpResponse對象。
render()的參數介紹:
(1)request:用于生成響應的請求對象。
(2)template_name:要使用的模板的完整名稱,可選的參數
(3)context:添加到模板上下文的一個字典。默認是一個空字典。如果字典中的某個值是可調用的,視圖將在渲染模板之前調用它。
例如,我們現在用render()方法實現“返回當前時間”的功能,視圖函數可以這樣寫(路由控制部分省略):
def index(request):import datetimen = datetime.datetime.now()now = n.strftime('%Y-%m-%d:%X')return render(request,'index.html',{'datetime':now})
模板文件index.html中的內容為:
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>Title</title> </head> <body><h4>當前時間:{{ ctime }}</h4></body> </html>
需要注意的是:瀏覽器并不認識模板語法,render方法找到index.html文件之后,它先檢查里面有沒有模板語法,如果有模板語法先將傳入的值做“替換”,就是將視圖中字典{'datetime':now}中datetime鍵對應的value值now作為參數傳給瀏覽器,傳完參數之后index.html才是一個html文件了,然后render再將html文件那一堆東西傳給瀏覽器,所以瀏覽最后顯示的是now的值。這個“替換”的過程十分重要,請大家務必理解并掌握!

redirect()——重定向

我們可以傳遞要重定向的一個硬編碼的URL:
def my_view(request):...return redirect('/some/url/')
也可以是一個完整的URL:
def my_view(request):...return redirect('http://example.com/')
對于重定向的使用場景,這里做了一下三點小結:
(1)網站調整(如改變網頁目錄結構)。
(2)網頁被移到一個新地址。
(3)網頁擴展名改變(如應用需要把.php改成.Html或.shtml)。這種情況下,如果不做重定向,則用戶收藏夾或搜索引擎數據庫中舊地址只能讓訪問客戶得到一個404頁面錯誤信息,訪問流量白白喪失;再者某些注冊了多個域名的網站,也需要通過重定向讓訪問這些域名的用戶自動跳轉到主站點等。
對于有關重定向狀態碼301與302的區別說明如下:
1.共同點:301和302狀態碼都表示重定向,就是說瀏覽器在拿到服務器返回的這個狀態碼后會自動跳轉到一個新的URL地址,這個地址可以從響應的Location首部中獲取(用戶看到的效果就是他輸入的地址A瞬間變成了另一個地址B)
2.不同點:301表示舊地址A的資源已經被永久地移除了(這個資源不可訪問了),搜索引擎在抓取新內容的同時也將舊的網址交換為重定向之后的網址;302表示舊地址A的資源還在(仍然可以訪問),這個重定向只是臨時地從舊地址A跳轉到地址B,搜索引擎會抓取新的內容而保存舊的網址。

轉載于:https://www.cnblogs.com/paulwhw/p/9375766.html

總結

以上是生活随笔為你收集整理的Django的视图层简介的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日韩中文久久 | 新婚夫妇白天啪啪自拍 | 亚洲 欧美 日韩 国产综合 在线 | 成人性生生活性生交全黄 | 91精品久久久久久 | 亚洲福利视频一区 | 校园春色 亚洲色图 | 麻豆回家视频区一区二 | 2019天天干天天操 | 日韩三级中文字幕 | 亚洲天堂第一 | 日韩精品久久一区 | 三级国产视频 | 天堂网中文在线观看 | 久久男人精品 | 91av在线免费观看 | av资源部 | 涩里番在线观看 | 色偷偷影院 | 在线一级 | 影音先锋久久 | 亚洲国产精品激情在线观看 | 欧美中日韩在线 | 色九九| 亚洲第五页 | 亚洲欧美日韩视频一区 | 香蕉一区二区三区四区 | 国产a∨精品一区二区三区仙踪林 | 5d肉蒲团之性战奶水 | 91久久人澡人人添人人爽欧美 | 丰满人妻在公车被猛烈进入电影 | 女人的黄色片 | 91羞羞网站 | 黄色精彩视频 | 中文在线www | 玖玖国产| av色图在线 | 大桥未久av在线播放 | 亚洲一区二区自拍 | 欧美a视频在线观看 | 香蕉在线视频观看 | 欧美亚洲综合在线 | 免费看黄在线网站 | 中国黄色免费网站 | 国产精品suv一区二区三区 | 国产精品久久国产精品99 | 欧美一级淫片免费视频黄 | 熟妇人妻中文字幕无码老熟妇 | 九九午夜视频 | 日本三级视频在线 | 亚洲国产精品va在线看黑人 | 狠狠干干 | 97香蕉超级碰碰久久免费软件 | 欧洲色综合 | 青青草原国产 | 国产二区在线播放 | 天天爱综合 | 亚洲AV永久无码国产精品国产 | 人人搞人人爱 | 日本一区二区三区四区五区 | 亚洲精品视频在线观看免费视频 | 国产精品国色综合久久 | 韩日视频一区 | 超碰99在线 | 精品一区二区三区入口 | 四虎影视8848hh | 老司机在线精品视频 | 日本www高清 | av乱码| 涩涩涩av | 国产又爽又猛又粗的视频a片 | www.四色| aa黄色大片| 精品久久久久久久久久久久久久久久久久 | 国产aaa| 久久香蕉影院 | 91干干干 | 国产传媒一区二区三区 | 黄色片久久久久 | 日本午夜一区二区 | 麻豆影视网站 | 久久久wwww | 久久免费久久 | 日韩午夜激情 | 欧美性猛交xxx乱大交3蜜桃 | 阿v天堂2017 欧美小视频在线观看 | 亚洲第七页 | 黄色一极毛片 | 91精品婷婷国产综合久久 | 999国内精品永久免费视频 | 人妻精品一区一区三区蜜桃91 | 久久无码性爱视频 | 亚洲黄色影院 | 亚洲激情六月 | 国产成人在线视频观看 | 欧美xxxx18 | 高潮白浆女日韩av免费看 | 亚洲性视频在线 | 亚洲天堂av在线免费观看 |