天天看點

【Django】Django視圖views詳解

視圖 views

視圖的工作流程

views的工作流程可以分為三個部分:

  1. 使用者發送請求(request)
  2. 處理使用者的請求(handler)
  3. 将處理後的資料傳回給使用者(response)

Request簡介

request是浏覽器向伺服器發送的請求對象(包含使用者資訊、請求内容、請求方法等)

可以使用

dir(request)

檢視request對象中的所有方法(如下圖):

【Django】Django視圖views詳解

 常用的request對象方法

  • request.GET

    擷取url上

    ?

    後面的參數
  • request.POST

    擷取

    post

    送出的參數
  • request.path

    請求的路徑(如

    127.0.0.1/index/aqin

    中就是

    /index/aqin

  • request.method

    請求的方法(get/post等)
  • request.COOKIES

    請求過來的cookies
  • request.user

    請求的使用者對象(可以通過他判斷使用者是否登陸,并擷取使用者資訊)
  • request.session

    目前對話(一個類似字典對象,可讀可寫)
  • request.META

    包含所有HTTP首部(一個标準的Python字典)

傳回對象(常見的)

  • HttpResponse 直接傳回資料内容
    • from django.http import HttpResponse
                 
  • reder 傳回模版渲染後的資料
    • from django.shortcuts import render
                 
  • JsonResponse 傳回json格式的資料
    • from django.shortcuts import render
                 

基于類的視圖

app/views.py

from django.http import HttpResponse
from django.views.generic import View

class MyClass(View):
    def get(self, request):
    name = request.GET.get('name')
    print(dir(request))
    return HttpResponse('hello {}~'.format(name))
           

app/urls.py

from django.urls import path 
from .views import MyClass

urlpatterns = [
    path('myclass',MyClass.as_view())
]
           

urls.py

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('app.urls')),
]
           

settings.py的修改部分

# 網站通路白名單
ALLOWED_HOSTS = ['*']

# Application definition
# 應用注冊
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'app',
]

……

# 網站預設語言(en-us/zh-hans)
LANGUAGE_CODE = 'zh-hans'

# 配置網站時間(亞洲時間,預設是 UTC)
TIME_ZONE = 'Asia/Shanghai'

# 預設True
USE_TZ = False
           

網頁效果

【Django】Django視圖views詳解

控制台輸出

【Django】Django視圖views詳解