Django視圖函數

視圖函數

  一個視圖函數,簡稱視圖,是一個簡單的Python 函數,它接受Web請求而且返回Web響應。響應能夠是一張網頁的HTML內容,一個重定向,一個404錯誤,一個XML文檔,或者一張圖片. . . 是任何東西均可以。不管視圖自己包含什麼邏輯,都要返回響應。代碼寫在哪裏也無所謂,只要它在你的Python目錄下面。除此以外沒有更多的要求了——能夠說「沒有什麼神奇的地方」。爲了將代碼放在某處,約定是將視圖放置在項目或應用程序目錄中的名爲views.py的文件中。html

1、視圖函數


    必定包含兩個對象: 
        requset---->用戶請求相關的全部信息(對象)
        Httpresponse---->響應字符串
python

        注:它接受的參數,第一個參數默認就是request對象,它的返回值必定要是一個HttpResponse類型django

 

 

  • FBV --->把視圖寫成一個函數
    path('login/',views.Login.as_view(),name="login"),#CBV方式
    		(Login(類),as_view(類方法))
    	
    	def func(request):
    		#在函數中如何區分GET請求和POST請求
    		if request.method == "POST":
    			-->這是POST請求 -->提交數據
    		if request.method == "GET":
    			-->這是GET請求 -->獲取一個頁面



    下面是一個返回當前日期和時間做爲HTML文檔的視圖:
    from django.http import HttpResponse import datetime def current_datetime(request): now = datetime.datetime.now() html = "<html><body>It is now %s.</body></html>" % now return HttpResponse(html)

    讓咱們逐行閱讀上面的代碼:cookie

    • 首先,咱們從 django.http模塊導入了HttpResponse類,以及Python的datetime庫。session

    • 接着,咱們定義了current_datetime函數。它就是視圖函數。每一個視圖函數都使用HttpRequest對象做爲第一個參數,而且一般稱之爲request函數

      注意,視圖函數的名稱並不重要;不須要用一個統一的命名方式來命名,以便讓Django識別它。咱們將其命名爲current_datetime,是由於這個名稱可以精確地反映出它的功能。post

    • 這個視圖會返回一個HttpResponse對象,其中包含生成的響應。每一個視圖函數都負責返回一個HttpResponse對象。url



    視圖函數,圍繞着兩個對象進行:HttpResponse和HttpRequest

  • CBV --->把視圖寫成一個類
    導入基類
    	from django.views import View
    	class Login(View):
    		def dispatch(self):
    			在請求前和請求以後執行
    			hasattr("get")
    			具體咱們會在後面講cookie和session時候再講(登陸)
    ​		def get(self, request,):
    ​			-->這是GET請求
    ​		def post(self,request):
    ​			-->這是POST請求

 

2、HttpRequest

request---->請求信息         屬性:spa

request.path       # 獲取訪問文件路徑

request.method屬性   #獲取請求中使用的HTTP方式(POST/GET)

request.body      #含全部請求體信息 是bytes類型

request.GET        #GET請求的數據(類字典對象)  請求頭中的url中?後面拿值
request.POST     # POST請求的數據(類字典對象) 請求體裏拿值

request.COOKIES     #包含全部cookies的標準Python字典對象;keys和values都是字符串。


request.FILES:      包含全部上傳文件的類字典對象;FILES中的每個Key都是<input type="file" name="" />標籤中
                 name屬性的值,FILES中的每個value同時也是一個標準的python字典對象,包含下面三個Keys:

                 filename:      上傳文件名,用字符串表示
                 content_type:   上傳文件的Content Type
                 content:       上傳文件的原始內容


request.user:       是一個django.contrib.auth.models.User對象,表明當前登錄的用戶。若是訪問用戶當前
                 沒有登錄,user將被初始化爲django.contrib.auth.models.AnonymousUser的實例。你
                 能夠經過user的is_authenticated()方法來辨別用戶是否登錄:
                 if req.user.is_authenticated();只有激活Django中的AuthenticationMiddleware
                 時該屬性纔可用

request.session:      惟一可讀寫的屬性,表明當前會話的字典對象;本身有激活Django中的session支持時該屬性纔可用

request.GET.get('name')    拿到GET請求裏name的值

若是某個鍵對應有多個值,則不能直接用get取值,須要用getlist,如:

request.POST.getlist("hobby")



請求url:http://127.0.0.1:8000/index.html/23?a=1

request.path : 請求路徑       
       request.path結果爲:/index.html/23

request.get_full_path()
       request.get_full_path()結果爲:/index.html/23?a=1

 方法:.net

get_full_path()
注意:鍵值對的值是多個的時候,好比checkbox類型的input標籤,select標籤,須要用:
request.POST.getlist("hobby")

  

3、HttpResponse

https://www.cnblogs.com/huchong/p/7718393.html

 

 

Form表單提交數據、三要素:

  1.action="提交的URL地址",method="post"

  2. form表單裏必須包含一個submit按鈕

  3.inputselectcheckboxradiotextareafile必須有name的屬性

相關文章
相關標籤/搜索