簡單視圖函數

視圖函數

文章目錄

  • 視圖函數
    • @[toc]
    • 一、什么是視圖函數
    • 二、簡單視圖函數
    • 三、返回錯誤視圖

一、什么是視圖函數

  • 所謂視圖函數(簡稱視圖),本質上就是一個Python函數,用于接收Web請求并且返回Web響應。
  • Web響應可以包含很多類型,比如常見的HTML網頁、重定向和404錯誤,也可以是XML文檔和圖像文件等。另外,無論視圖函數的具體處理邏輯如何定義,建議都返回某種類型的Web響應。
  • 視圖函數的代碼可以寫在項目的任何Python目錄下。但是,對于基于Django框架的Web項目而言,通常約定將視圖函數寫在項目或應用目錄下名稱為views.py的文件中。

二、簡單視圖函數

這里設計一個基于Django框架的Web應用項目,實現了將當前日期和時間編碼為HTML文檔進行返回的簡單視圖函數。

(1)首先,將該Web項目應用的名稱定義為“ViewDjango”,實現返回當前日期和時間的簡單視圖函數應用的名稱定義為“SimpleView”,具體文件結構如圖4.2所示。

在這里插入圖片描述

django-admin startproject ViewDjango	# 創建項目
cd ViewDjango
django-admin startapp SimpleView		# 創建應用

ViewDjango為項目根目錄,SimpleView為具體的應用目錄。

(2)然后定義ViewDjango項目根目錄下的路由文件urls.py,實現到SimpleView應用的路由路徑

【ViewDjango\ViewDjango\urls.py】

from django.contrib import admin
from django.urls import include, path# define URLconf			
urlpatterns = [					# 定義ViewDjango項目應用的根URLconf模塊path('simple/', include('SimpleView.urls')),	# 通過path()函數定義一個路由路徑'simple/',對應通過include方式包括的SimpleView應用的URLconf模塊'SimpleView.py'path('admin/', admin.site.urls),
]

(3)接下來,定義SimpleDjango應用目錄中的路由文件urls.py

【ViewDjango\SimpleView\urls.py】

#---   SimpleView urls.py   ---#from django.urls import include, path
from . import views# define URLconf
urlpatterns = [		# 定義了應用的URLconf模塊path("", views.index, name='index'),	# 通過path函數將應用的默認路徑解析為視圖函數views.indexpath("curdatetime/", views.current_datetime),	# 通過path函數將路徑curdatetime解析為視圖函數
]

(4)最后,定義SimpleDjango應用中的視圖函數文件views.py

【ViewDjango\SimpleView\view.py】

#---   SimpleView views.py   ---#from django.http import HttpResponse
from django.shortcuts import render# Create your default views.def index(request):	# 定義默認視圖函數views.indexreturn HttpResponse("Hello, SimpleView App!")	# 返回對象文本# Create your datetime views.import datetime	# 導入日期和時間類型對象datetimedef current_datetime(request):now = datetime.datetime.now()	# 通過時間日期調用now()方法,獲取當前時間html = "<html><body>It is now %s.</body></html>" % now	# 定義html,并傳遞當前時間到頁面代碼中return HttpResponse(html)	# 返回頁面代碼

(5)測試視圖

運行服務器

python manage.py runserver

瀏覽器訪問:(http://localhost:8000/simple/)

在這里插入圖片描述

瀏覽器訪問:(http://localhost:8000/simple/curdatetime/)

外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳


三、返回錯誤視圖

  • 在Django框架中,返回HTTP錯誤代碼的方法非常簡單。

  • HttpResponse類的許多子類對應著一些常用的HTTP狀態碼,比如HTTP 404錯誤對應的HttpResponseNotFound子類,當然這里面不包括200狀態碼(表示“OK”)。

  • Django為了標識一個錯誤,直接返回那些子類中的一個實例,而不是普通的HttpResponse對象。

  • 在本小節中,我們通過HttpResponseNotFound子類設計一個返回錯誤視圖的應用,用來模擬返回404錯誤狀態。

(1)首先,將返回錯誤視圖函數應用的名稱定義為“ErrorView”,具體文件結構如圖

django-admin.exe startapp ErrorView

在這里插入圖片描述

(2)然后,重新定義ViewDjango項目根目錄下的路由文件urls.py,實現到ErrorView應用的路由路徑

【ViewDjango\ViewDjango\urls.py】

from django.contrib import admin
from django.urls import include, path# define URLconf
urlpatterns = [path('simple/', include('SimpleView.urls')),path('error/', include('ErrorView.urls')),	# 通過函數新增路由路徑,通過include包括應用的URLconf模塊path('admin/', admin.site.urls),
]

(3)接下來,定義ErrorView應用目錄中的路由文件urls.py

【ViewDjango\ErrorView\urls.py】

#---   ErrorView urls.py   ---#from django.urls import include, path
from . import views# define URLConf
urlpatterns = [path("", views.index, name='index'),	# 通過path函數將應用默認路徑解析為視圖函數path("pagenotfound/<int:p>/", views.error_view),# 通過path函數將路徑解析為視圖函數,添加一個路由參數,p用于選擇不同的視圖返回值
]

(4)最后,定義ErrorView應用中的視圖函數views.py

【ViewDjango\ErrorView\views.py】

#---   ErrorView views.py   ---#from django.http import HttpResponse, HttpResponseNotFound
from django.shortcuts import render# import logging
import logging
# get logger
logger = logging.getLogger('log')# Create your views here.# default view
def index(request):		# 定義默認視圖函數return HttpResponse("Hello, ErrorView App!")# error view
def error_view(request, p):		# 定義錯誤視圖函數print("p =", p)if p:return HttpResponse("Page not found!")else:return HttpResponseNotFound("HttpResponseNotFound --- Page not found!")

(5)驗證效果

瀏覽器訪問:(http://localhost:8000/error/)

在這里插入圖片描述

瀏覽器訪問:(http://localhost:8000/error/pagenotfound/1/)

在這里插入圖片描述

也可以通過瀏覽器控制臺查看一下返回的HTTP狀態碼,顯示為“Status:200 OK”

在這里插入圖片描述

瀏覽器訪問:(http://localhost:8000/error/pagenotfound/0/)

在這里插入圖片描述

再通過瀏覽器控制臺查看HTTP狀態碼,顯示為:“Status:404 Not Found”,這說明HttpResponseNotFound子類直接返回了HTTP 404錯誤視圖。

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/75245.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/75245.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/75245.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

QT文件操作(QT實操學習3)

1.項目架構 1.UI界面 1.新建文本文檔 2.打開文件 3.另存為文件 2.mainwindow.h? #ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow> #include <QFileDialog> #include <QMessageBox> #include <QDebug> QT_BEGIN_NAMESPACE namespa…

HX324雙運算放大器:賦能萬物互聯時代的信號處理基石

一、運算放大器行業的技術演進與市場需求 在全球半導體市場規模突破6000億美元的背景下&#xff0c;模擬芯片作為電子系統的"感官神經"&#xff0c;正迎來智能化升級浪潮。據IC Insights數據顯示&#xff0c;2023年全球運算放大器市場規模達32.7億美元&#xff0c;其…

C++ 結構體與函數

一.結構體 1.概念&#xff1a; 結構體&#xff08;struct&#xff09;是一種用戶自定義復合數據類型&#xff0c;其中可以包含不同類型的不同成員 2.結構體的應用場景&#xff1a; 我們在使用多個變量描述一個對象時&#xff0c;雖然也可以做到&#xff0c;但是難免顯得雜亂…

Python數據可視化-第1章-數據可視化與matplotlib

環境 開發工具 VSCode庫的版本 numpy1.26.4 matplotlib3.10.1 ipympl0.9.7教材 本書為《Python數據可視化》一書的配套內容&#xff0c;本章為第1章 數據可視化與matplotlib 本文主要介紹了什么是數據集可視化&#xff0c;數據可視化的目的&#xff0c;常見的數據可視化方式…

ESLint報錯:Could not find config file.

如果你的ESLint的版本大于 8&#xff0c;同時使用 .eslinrc.js 和 .eslintignore 作為配置文件&#xff0c;且目前用的是 VSCODE &#xff0c;就有可能遇到報錯&#xff1a; Could not find config file. 這個是因為 VSCode 中 ESLint 插件的配置 eslint.useFlatConfig 的問題…

基于SpringBoot的“醫療設備管理系統”的設計與實現(源碼+數據庫+文檔+PPT)

基于SpringBoot的“醫療設備管理系統”的設計與實現&#xff08;源碼數據庫文檔PPT) 開發語言&#xff1a;Java 數據庫&#xff1a;MySQL 技術&#xff1a;SpringBoot 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系統展示 系統總體功能模塊圖 系統E-R圖 系統登錄界面 …

WordPress漢主題

WordPress漢主題wphan.com(以下簡稱WP漢主題)是一個專注于WordPress中文主題與插件開發的專業團隊。該團隊致力于為中文用戶提供高質量的WordPress主題和插件資源&#xff0c;幫助用戶輕松創建專業且吸引人的網站。 WP漢主題提供多種功能豐富的WordPress主題&#xff0c;涵蓋博…

arthas之jvm相關命令

文章目錄 1. dashboard2. thread線程相關3. jvmTHREAD相關文件描述符相關 4. sysprop5. 小結6. sysenv7. vmoption8. getstatic9. ognl10. 小結 1. dashboard 作用&#xff1a;顯示當前系統的實時數據面板&#xff0c;按q或ctrlc退出 數據說明 ID: Java級別的線程ID&#xff…

小米平板 4 Plus 玩機日志

在一次偶然中&#xff0c;我從一個角落中找到了這臺小米平板 4 Plus&#xff08;是的&#xff0c;現在正在用這個平板寫這篇文章&#xff09;。在找到她的時候&#xff0c;她已經奄奄一息了&#xff0c;即使按動那脆弱的電源鍵也沒有任何響應。 在給她補充能源后&#xff0c;她…

MSYS2學習筆記

前言 本文內容是MSys2 Documentation的學習筆記可以使用MSYS2編譯QGis 學習筆記 什么是MSYS2&#xff1f; MSYS2&#xff08;Minimal System 2&#xff09;是一個為Windows平臺打造的軟件開發環境和包管理系統&#xff0c;它結合了Cygwin的POSIX兼容層、Arch Linux的pacman…

gnvm切換node版本號

1. gnvm下載官網 GNVM - Node.js version manager on Windows by Go 2. 安裝 2.1 不存在 Node.js 環境 下載并解壓縮 gnvm.exe 保存到任意文件夾&#xff0c;并將此文件夾加入到環境變量 Path。 2.2 存在 Node.js 環境 下載并解壓縮 gnvm.exe 保存到 Node.js 所在的文件夾。 2.…

目標檢測 AP 計算 實例 python

以下是使用 Python 實現目標檢測中 ?Average Precision (AP)? 計算的完整實例&#xff0c;包含代碼和注釋。這里以 ?Pascal VOC 標準? 為例&#xff08;IoU閾值0.5&#xff09;。 步驟1&#xff1a;準備數據 假設&#xff1a; gt_boxes: 真實標注框列表&#xff0c;格式為 …

AWS用Glue讀取S3文件上傳數據到Redshift,再導出到Quicksight完整版,含VPC配置

1. 項目背景 AWS的官方文檔&#xff0c;關于Glue和Vpc配置部分已經比較舊了&#xff0c;按照官方文檔配置的流程始終跑不通&#xff0c;花了一番時間和波折后&#xff0c;才終于完整的跑通了。 在數據分析和商業智能&#xff08;BI&#xff09;領域&#xff0c;我們常需要將存…

SpringBoot詳細教程(持續更新中...)

SpringBoot 一、概述 Springboot有哪些特點呢&#xff1f;或者說它跟Spring比有哪些優點呢&#xff1f; 1、起步依賴 通俗的說&#xff0c;就是一個依賴包含了很多個依賴&#xff1b;好處是引入所需的依賴更加簡便&#xff0c;而且有效避免了依賴之間的版本沖突問題&#xf…

亞馬遜玩具品類技術驅動型選品策略:從趨勢洞察到合規基建

一、全球玩具電商技術演進趨勢 &#xff08;技術化重構原市場背景&#xff09; 數據可視化分析&#xff1a;通過亞馬遜SP-API抓取2023年玩具品類GMV分布熱力圖 監管技術升級&#xff1a; 美國CPSC啟用AI質檢系統&#xff08;缺陷識別準確率92.7%&#xff09; 歐盟EPR合規接口…

spring boot 整合redis

1.在pom文件中添加spring-boot-starter-data-redis依賴啟動器 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId> </dependency> 2.編寫三個實體類 RedisHash("p…

python 語法篇(一)

目錄 1 正則匹配注意點11.1 正則匹配字符串寫法1.2 創建re函數&#xff08;1&#xff09;re.search()--搜索第一個匹配項&#xff08;2&#xff09;re.match() - 從字符串開頭匹配&#xff08;3&#xff09;re.findall() - 返回所有匹配項的列表&#xff08;4&#xff09;re.fi…

深度學習Note.4(機器學習實踐)

線性回歸 零. 1.paddle庫的一些API paddle.rand(shape,dtype None, name None) *隨機生成符合均勻分布的Tensor paddle.nromal(mean 0.0, std 1.0, shape None, name None) *隨機生成符合正態分布的Tensor *輸入正態分布均值&#xff0c;標準差&#xff0c; 生成結果的…

UE5學習筆記 FPS游戲制作29 更換武器時更換武器的圖標

文章目錄 制作物體圖標UI添加獲取武器圖標的方法使用事件分發器&#xff0c;通知UI要換槍定義事件分發器調用事件分發器注冊事件分發器 制作物體圖標UI 在Fpp-UI上添加一個圖片&#xff0c;改名為五weaponIcon&#xff0c;勾選SizeToContent,錨點放在右下角&#xff0c;對齊改…

RCE(自增、取反、異或)

自增: 也就是說&#xff0c;a > b&#xff0c;b > c... 所以&#xff0c;我們只要能拿到一個變量&#xff0c;其值為a&#xff0c;通過自增操作即可獲得a-z中所有字符。 無字母數字構造&#xff1a; 所有敏感字符串&#xff08;ASSERT、_POST&#xff09;通過自增動態生…