Django學習系列之request對象


先來一個簡單的實例

urls.py

from django.conf.urls import url
from django.contrib import admin
from cmdb import views
urlpatterns = [
    url(r'^login/', views.index),
]

views.py

from django.shortcuts import render
from django.views.generic import View
# Create your views here.

class login(View)  
def get(self,request):
return render(request,'login.html') def post(self,request): user_input
= [] user = request.POST.get('user',None) email = request.POST.get('email',None) temp = {'user':user,'email':email} USER_INPUT.append(temp) return render(request,'login.html',{'data':USER_INPUT})

login.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
{#    把表單以post方式提交index函數處理#}
    <form action="login/" method="post">
        <input type="text" name="user"/>
        <input type="text" name="email">
        <input type="submit" value="提交">
    </form>
{#將提交到login函數的表單內容在這里展示#}
    <h1>數據展示</h1>
    <table border="1">
        {% for item in data %}
            <tr>
                <td>{{ item.user  }}</td>
                <td>{{ item.email }}</td>
            </tr>
        {% endfor %}
    </table>
</body>
</html>

登錄流程:

輸入127.0.0.1/login

把瀏覽器信息,客戶端地址,訪問地址等封裝到request里,以GET方式發送給login的url(因為是訪問頁面,所以是GET請求)

匹配到對應的url

在根據url匹配到處理函數,直接顯示頁面,完成訪問登錄頁面

 

在登錄頁面輸入用戶名密碼,點擊登錄

form表單把輸入的信息,瀏覽器信息,客戶端地址,訪問地址等封裝到request對象里,以post的形式發送給login的url

匹配到對應的url

根據url匹配到處理函數,發現是post請求,讓post處理

POST處理完,把登錄用戶等信息封裝到request里,和上下文一起傳給login.html,用來渲染login.html

request對象的屬性

request.scheme

代表請求的方案,http或者https

request.path

請求的路徑,比如請求127.0.0.1/org/list,那這個值就是/org/list

request.method

表示請求使用的http方法,GET或者POST請求

request.encoding

表示提交數據的編碼方式

request.GET

獲取GET請求

request.POST

獲取post的請求,比如前端提交的用戶密碼,可以通過request.POST.get()來獲取

另外:如果使用 POST 上傳文件的話,文件信息將包含在 FILES 屬性中

request.COOKIES

包含所有的cookie

request.META

一個標准的Python 字典,包含所有的HTTP 首部。具體的頭部信息取決於客戶端和服務器,下面是一些示例:

  • CONTENT_LENGTH —— 請求的正文的長度(是一個字符串)。
  • CONTENT_TYPE —— 請求的正文的MIME 類型。
  • HTTP_ACCEPT —— 響應可接收的Content-Type。
  • HTTP_ACCEPT_ENCODING —— 響應可接收的編碼。
  • HTTP_ACCEPT_LANGUAGE —— 響應可接收的語言。
  • HTTP_HOST —— 客服端發送的HTTP Host 頭部。
  • HTTP_REFERER —— Referring 頁面。
  • HTTP_USER_AGENT —— 客戶端的user-agent 字符串。
  • QUERY_STRING —— 單個字符串形式的查詢字符串(未解析過的形式)。
  • REMOTE_ADDR —— 客戶端的IP 地址。
  • REMOTE_HOST —— 客戶端的主機名。
  • REMOTE_USER —— 服務器認證后的用戶。
  • REQUEST_METHOD —— 一個字符串,例如"GET" 或"POST"
  • SERVER_NAME —— 服務器的主機名。
  • SERVER_PORT —— 服務器的端口(是一個字符串)

request.user

一個 AUTH_USER_MODEL 類型的對象,表示當前登錄的用戶。

如果用戶當前沒有登錄,user 將設置為 django.contrib.auth.models.AnonymousUser 的一個實例。你可以通過 is_authenticated() 區分它們

把request傳給前端的時候,前端可以通過 {%  if request.user.is_authenticated  %}判斷用戶時候登錄

request.session

個既可讀又可寫的類似於字典的對象,表示當前的會話

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM