摘要:概述作用視圖接收請求并返回響應方法就是在視圖里使用函數(shù)處理請求。
概述
作用:視圖接收WEB請求并返回WEB響應方法:1. FBV(function base views)?就是在視圖里使用函數(shù)處理請求。
? 2. CBV(class base views)?就是在視圖里使用類處理請求。
響應: 可以是一個HTML頁面,一個重定向,一個404錯誤、一個JSON數(shù)據(jù)等等
過程:
URLConf 視圖函數(shù) HttpRequest對象概述: 服務器接收到http協(xié)議的請求后,會根據(jù)報文創(chuàng)建HttpRequest對象; 視圖函數(shù)的一個形參就是HttpRequest對象屬性 方法
is_ajax(): 如果請求是通過XMLHTTPRequest類發(fā)起的,返回True
QueryDict對象
clipboard.png
http://127.0.0.1:8000/get1/?a=1&b=2&c=3
def get1(request): a = request.GET.get("a") b = request.GET.get("b") c = request.GET.get("c") return HttpResponse(a+"-"+b+"-"+c)
http://127.0.0.1:8000/get2/?a=1&a=2&c=3
def get2(request): alist = request.GET.getlist("a") c = request.GET.get("c") return HttpResponse(alist[0]+"-"+alist[1]+"-"+c)POST屬性
使用表單提交,需要將settings.py文件中的"django.middleware.csrf.CsrfViewMiddleware",中間件去掉
或者加上{%csrf_token}
注冊
#views.py def register(request): if request.method == "GET": return render(request, "register.html") else: username = request.POST.get("username") passwd = request.POST.get("passwd") hobbys = request.POST.getlist("hobby") print(username, passwd, hobbys) return HttpResponse("注冊成功")HttpResponse對象
概述: HttpRequest對象由Django自動創(chuàng)建的,但是HttpResponse對象由程序員創(chuàng)建的;存儲服務器響應給客戶端的數(shù)據(jù)用法
常見的MIME類型(通用型):
超文本標記語言文本 .html text/html
xml文檔 .xml text/xml
XHTML文檔 .xhtml application/xhtml+xml
普通文本 .txt text/plain
RTF文本 .rtf application/rtf
PDF文檔 .pdf application/pdf
Microsoft Word文件 .word application/msword
PNG圖像 .png image/png
GIF圖形 .gif image/gif
JPEG圖形 .jpeg,.jpg image/jpeg
au聲音文件 .au audio/basic
MIDI音樂文件 mid,.midi audio/midi,audio/x-midi
RealAudio音樂文件 .ra, .ram audio/x-pn-realaudio
MPEG文件 .mpg,.mpeg video/mpeg
AVI文件 .avi video/x-msvideo
GZIP文件 .gz application/x-gzip
TAR文件 .tar application/x-tar
任意的二進制數(shù)據(jù) application/octet-stream
屬性屬性 | 描述 |
---|---|
content | 表示返回的內(nèi)容,字符串類型 |
charset | 表示response采用的編碼字符集,字符串類型 |
status_code | 響應HTTP的狀態(tài)碼 |
content_type | 指定輸出的MIME類型 |
init:?使用頁面實例化HttpResponse對象
write(content):
# 以文件的方式寫入,將 content 寫到報文的主體中,這使得 HttpResponse 的實例類似于文件對象 def index(request): response = HttpResponse() response.content = "sunck is a good man" response.charset = "utf-8" response.write("!") response.write("very good!") return response
flush()?: 以文件的方式輸出緩沖區(qū); 在flush之后就不要在寫write了
set_cookie():
原型:set_cookie(self, key, value="", max_age=None, expires=None, path="/", domain=None, secure=False, httponly=False)
作用: 設置cookie,cookie是保存在客戶端的信息,以鍵值對的形式保存
參數(shù):
key : cookie的鍵
value:cookie的值
max_age: 過期時間 單位秒
expires:設置過期時間 datetime.datetime 對象
示例:
def setcookie(request): response = HttpResponse("sunck is a handsome man") response.set_cookie("sunck", "good") return response request.COOKIES.get("sunck")子類HttpResponseRedirect
功能: 重定向,服務器端跳轉(zhuǎn)
實現(xiàn)
from django.http import HttpResponse, HttpResponseRedirect def indexTemp(request): # 重定向到/index/ return HttpResponseRedirect("/index/") from django.shortcuts import render, redirect from django.http import HttpResponse, HttpResponseRedirect def indexTemp(request): # 重定向到/index/, HttpResponseRedirect很少用了,一般用redirect # return HttpResponseRedirect("/index/") return redirect("/index")子類JsonResponse
返回JSON數(shù)據(jù),一般用于異步請求
優(yōu)點: 幫助用戶創(chuàng)建JSON編碼響應; 參數(shù)是字典對象,如果傳入不是字典格式比如列表,設置參數(shù)safe=False;JsonResponse的默認Content-Type為application/json,不需要我們寫了。
狀態(tài)保持 概述 啟用session# settings.py 默認已經(jīng)啟用 "django.contrib.sessions", "django.contrib.sessions.middleware.SessionMiddleware"使用session
啟用session后,每個HttpRequest對象都將具有一個session屬性,它是一個類似字典的對象
方法 | 解釋 |
---|---|
get(key, default=None) | 根據(jù)鍵獲取會話的值 |
clear() | 清除所有會話 |
flush() | 刪除當前的會話并刪除會話的cookie |
del request.session[鍵] | 刪除會話 |
def home(request): userAccount = request.session.get("userAccount", default="未登錄") return render(request, "home.html", {"userAccount":userAccount}) def cart(request): userAccount = request.session.get("userAccount", default="未登錄") return render(request, "cart.html", {"userAccount":userAccount}) def login(request): if request.method == "GET": fromPath = request.GET.get("from") return render(request, "login.html", {"fromPath":fromPath}) else: userAccount = request.POST.get("userAccount") passwd = request.POST.get("passwd") # 從哪里來 fromPath = request.GET.get("from") # 驗證 if userAccount == "sunck" and passwd == "sunck1999": #登陸成功 #狀態(tài)保持,將用戶名寫入session request.session["userAccount"] = userAccount fromPath = "/" + fromPath + "/" return redirect(fromPath) else: #登陸失敗 return redirect("/login/?from=%s"%fromPath) from django.contrib.auth import logout def quit(request): logout(request) return redirect("/home/")過期時間 存儲session
基于數(shù)據(jù)庫的會話: 默認的會話存儲方式
SESSION_ENGINE="django.contrib.sessions.backends.db"
基于緩存的會話: 只存在本地內(nèi)存中,如果丟失則不能找回,比數(shù)據(jù)庫的方式讀寫更快
SESSION_ENGINE="django.contrib.sessions.backends.cache"
數(shù)據(jù)庫用于做持久化,緩存用于提高效率,先去緩存中取數(shù)據(jù),緩存沒有再去數(shù)據(jù)庫中取,然后在緩存中存一份
SESSION_ENGINE="django.contrib.sessions.backends.cached_db"
使用redis緩存sessionSESSION_ENGINE="redis_sessions.session" SESSION_REDIS_HOST="localhost" SESSION_REDIS_PORT=6379 SESSION_REDIS_DB=0 SESSION_REDIS_PASSWORD="" SESSION_REDIS_PREFIX="session" #通過redis-cli客戶端可以查看: 127.0.0.1:6379> select 0 OK 127.0.0.1:6379[4]> keys * 1) "session:0bjyuegx0i5ivyuzpb8ezgo0b35u2z4v"
文章版權歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/42251.html
摘要:概述作用視圖接收請求并返回響應本質(zhì)視圖就是一個函數(shù),被定義在文件中響應可以是一個頁面,一個重定向,一個錯誤一個數(shù)據(jù)等等過程視圖函數(shù)對象概述服務器接收到協(xié)議的請求后,會根據(jù)報文創(chuàng)建對象視圖函數(shù)的一個形參就是對象屬性方法如果請求是通過類發(fā)起的, 概述 作用:視圖接收WEB請求并返回WEB響應本質(zhì): 視圖就是一個python函數(shù),被定義在views.py文件中 響應: 可以是一個HTML頁面...
摘要:是開發(fā)最常用的框架之一,跟進它的最新變化絕對是必須的。年月日,官方發(fā)布了版本,成為多年來的第一次大版本提升,那么對廣大使用者有哪些變化和需要注意的地方呢一兼容性支持和。 Django 是 Python Web 開發(fā)最常用的框架之一,跟進它的最新變化絕對是必須的。 2017年12月2日,Django官方發(fā)布了2.0版本,成為多年來的第一次大版本提升,那么2.0對廣大Django使用者有哪...
摘要:編程從入門到實踐筆記。執(zhí)行命令后,項目的根目錄下會多出一個名為的數(shù)據(jù)庫文件。下面創(chuàng)建一個主題類用戶學習的主題返回模型的字符串表示類是中的一個定義了模型基本功能的類。這種交互式環(huán)境稱為,常用語測試項目和排除故障。 《Python編程:從入門到實踐》筆記。從本篇開始將是該書的最后一個項目,將用3篇文章來介紹Django的基礎。完成一個學習筆記的小網(wǎng)站。 1. 前言 在本篇中,我們將: 用...
概述:Django對各種數(shù)據(jù)庫都提供了很好的支持,Django為這些數(shù)據(jù)庫提供了統(tǒng)一的調(diào)用接口API,程序員可以根據(jù)自己的業(yè)務需求選擇不同的數(shù)據(jù)庫 ORM簡介 概述:對象-關系-映射 作用: 根據(jù)類生成表結(jié)構(gòu);將對象、列表的操作轉(zhuǎn)換成對應的SQL語句;將SQL語句查詢到的結(jié)果轉(zhuǎn)換為對象或者列表 優(yōu)點:極大的減輕開發(fā)人員的工作量,不需要面對因數(shù)據(jù)庫的變更而導致代碼無效在修改代碼 圖解: showIm...
摘要:那就是新建一個用戶,賦予該用戶只能操作該數(shù)據(jù)庫的權限。這是根據(jù)安全開發(fā)中的最小權限原則規(guī)定而來的,能夠有效的防止網(wǎng)站被攻擊后的代價。 基本操作將用一個簡單的實例來穿針引線,將盡量涉及到多的操作方法和軟件設計的原理 設計表的結(jié)構(gòu) 我們想要做一個班級管理的程序,我們先去設計一下數(shù)據(jù)庫表的結(jié)構(gòu)。首先我們應該有一下幾張表 班級表 學生表 班級表 表名:classes 班級id:id 班級...
閱讀 3132·2021-11-15 18:14
閱讀 1785·2021-09-22 10:51
閱讀 3300·2021-09-09 09:34
閱讀 3515·2021-09-06 15:02
閱讀 1034·2021-09-01 11:40
閱讀 3194·2019-08-30 13:58
閱讀 2535·2019-08-30 11:04
閱讀 1089·2019-08-28 18:31