摘要:概述作用視圖接收請求并返回響應本質視圖就是一個函數,被定義在文件中響應可以是一個頁面,一個重定向,一個錯誤一個數據等等過程視圖函數對象概述服務器接收到協議的請求后,會根據報文創建對象視圖函數的一個形參就是對象屬性方法如果請求是通過類發起的,
概述
作用:視圖接收WEB請求并返回WEB響應本質: 視圖就是一個python函數,被定義在views.py文件中
響應: 可以是一個HTML頁面,一個重定向,一個404錯誤、一個JSON數據等等
過程:
URLConf 視圖函數 HttpRequest對象概述: 服務器接收到http協議的請求后,會根據報文創建HttpRequest對象; 視圖函數的一個形參就是HttpRequest對象屬性 方法
is_ajax(): 如果請求是通過XMLHTTPRequest類發起的,返回True
QueryDict對象 GET屬性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",中間件去掉
注冊
def registe(request): if request.method == "GET": return render(request, "registe.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自動創建的,但是HttpResponse對象由程序員創建的;存儲服務器響應給客戶端的數據用法
常見的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
任意的二進制數據 application/octet-stream
屬性屬性 | 描述 |
---|---|
content | 表示返回的內容,字符串類型 |
charset | 表示response采用的編碼字符集,字符串類型 |
status_code | 響應HTTP的狀態碼 |
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() : 以文件的方式輸出緩沖區; 在flush之后就不要在寫write了
set_cookie():
原型:set_cookie(self, key, value="", max_age=None, expires=None, path="/", domain=None, secure=False, httponly=False)
作用: 設置cookie,cookie是保存在客戶端的信息,以鍵值對的形式保存
參數:
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")
delete_cookie(key):刪除cookie
子類HttpResponseRedirect功能: 重定向,服務器端跳轉
實現
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/ # return HttpResponseRedirect("/index/") return redirect("/index")子類JsonResponse
返回JSON數據,一般用于異步請求
優點: 幫助用戶創建JSON編碼響應; 參數是字典對象;JsonResponse的默認Content-Type為application/json
狀態保持 概述 啟用session# settings.py 默認已經啟用 "django.contrib.sessions", "django.contrib.sessions.middleware.SessionMiddleware"使用session
啟用session后,每個HttpRequest對象都將具有一個session屬性,它是一個類似字典的對象
方法 | 解釋 |
---|---|
get(key, default=None) | 根據鍵獲取會話的值 |
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": #登陸成功 #狀態保持,將用戶名寫入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
基于數據庫的會話: 默認的會話存儲方式
SESSION_ENGINE="django.contrib.sessions.backends.db"
基于緩存的會話: 只存在本地內存中,如果丟失則不能找回,比數據庫的方式讀寫更快
SESSION_ENGINE="django.contrib.sessions.backends.cache"
同時基于緩存和數據庫的會話: 有限從本地緩存中獲取,如果沒有則從數據庫中獲取
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="sunck" SESSION_REDIS_PREFIX="session"
4-django——模板
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/41955.html
摘要:概述作用視圖接收請求并返回響應方法就是在視圖里使用函數處理請求。 概述 作用:視圖接收WEB請求并返回WEB響應方法:1. FBV(function base views)?就是在視圖里使用函數處理請求。 ? 2. CBV(class base views)?就是在視圖里使用類處理請求。 響應: 可以是一個HTML頁面,一個重定向,一個404錯誤、一個...
摘要:是開發最常用的框架之一,跟進它的最新變化絕對是必須的。年月日,官方發布了版本,成為多年來的第一次大版本提升,那么對廣大使用者有哪些變化和需要注意的地方呢一兼容性支持和。 Django 是 Python Web 開發最常用的框架之一,跟進它的最新變化絕對是必須的。 2017年12月2日,Django官方發布了2.0版本,成為多年來的第一次大版本提升,那么2.0對廣大Django使用者有哪...
摘要:編程從入門到實踐筆記。執行命令后,項目的根目錄下會多出一個名為的數據庫文件。下面創建一個主題類用戶學習的主題返回模型的字符串表示類是中的一個定義了模型基本功能的類。這種交互式環境稱為,常用語測試項目和排除故障。 《Python編程:從入門到實踐》筆記。從本篇開始將是該書的最后一個項目,將用3篇文章來介紹Django的基礎。完成一個學習筆記的小網站。 1. 前言 在本篇中,我們將: 用...
概述:Django對各種數據庫都提供了很好的支持,Django為這些數據庫提供了統一的調用接口API,程序員可以根據自己的業務需求選擇不同的數據庫 ORM簡介 概述:對象-關系-映射 作用: 根據類生成表結構;將對象、列表的操作轉換成對應的SQL語句;將SQL語句查詢到的結果轉換為對象或者列表 優點:極大的減輕開發人員的工作量,不需要面對因數據庫的變更而導致代碼無效在修改代碼 圖解: showIm...
摘要:那就是新建一個用戶,賦予該用戶只能操作該數據庫的權限。這是根據安全開發中的最小權限原則規定而來的,能夠有效的防止網站被攻擊后的代價。 基本操作將用一個簡單的實例來穿針引線,將盡量涉及到多的操作方法和軟件設計的原理 設計表的結構 我們想要做一個班級管理的程序,我們先去設計一下數據庫表的結構。首先我們應該有一下幾張表 班級表 學生表 班級表 表名:classes 班級id:id 班級...
閱讀 3627·2023-04-26 02:32
閱讀 3905·2021-11-23 10:05
閱讀 2291·2021-10-08 10:04
閱讀 2711·2021-09-22 16:06
閱讀 3612·2021-09-22 15:27
閱讀 764·2019-08-30 15:54
閱讀 1698·2019-08-30 13:50
閱讀 2704·2019-08-29 13:56