視圖 views
視圖的工作流程
views的工作流程可以分為三個部分:
- 使用者發送請求(request)
- 處理使用者的請求(handler)
- 将處理後的資料傳回給使用者(response)
Request簡介
request是浏覽器向伺服器發送的請求對象(包含使用者資訊、請求内容、請求方法等)
可以使用
dir(request)
檢視request對象中的所有方法(如下圖):
常用的request對象方法
-
擷取url上request.GET
後面的參數?
-
擷取request.POST
送出的參數post
-
請求的路徑(如request.path
中就是127.0.0.1/index/aqin
)/index/aqin
-
請求的方法(get/post等)request.method
-
請求過來的cookiesrequest.COOKIES
-
請求的使用者對象(可以通過他判斷使用者是否登陸,并擷取使用者資訊)request.user
-
目前對話(一個類似字典對象,可讀可寫)request.session
-
包含所有HTTP首部(一個标準的Python字典)request.META
傳回對象(常見的)
- 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