简单视图函数
视图函数
文章目录
- 视图函数
- @[toc]
- 一、什么是视图函数
- 二、简单视图函数
- 三、返回错误视图
文章目录
- 视图函数
- @[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错误视图。

相关文章:
简单视图函数
视图函数 文章目录 视图函数[toc]一、什么是视图函数二、简单视图函数三、返回错误视图 一、什么是视图函数 所谓视图函数(简称视图),本质上就是一个Python函数,用于接收Web请求并且返回Web响应。Web响应可以包含很多类型&#x…...
Flutter 2025生态全景:从跨端到嵌入式开发的新机遇
一、技术演进:从"一次编写多端运行"到"全场景覆盖" 1.1 渲染引擎革命:Impeller 2.0的性能突破 // 启用Impeller的配置示例(android/app/build.gradle) def enableImpeller true android {defaultConfig {…...
【sylar-webserver】7 定时器模块
文章目录 设计知识点 设计 #mermaid-svg-RbjvgaHrVWa5mA9X {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-RbjvgaHrVWa5mA9X .error-icon{fill:#552222;}#mermaid-svg-RbjvgaHrVWa5mA9X .error-text{fill:#552222;s…...
蓝桥杯备考----》完全背包模板
其实这个完全背包的步骤和01背包也是差不多滴,不过他有一些优化是我们必须要说一说的 老样子,我们先定义一下状态表示 step1: f[i][j]表示从1到i个物品里选出体积不超过j的最大价值 step2:状态转移方程 写成一行就是 我们再写一下f[i][j-v[i]]的表达…...
小白入门机器学习概述
文章目录 一、引言二、机器学习的基础概念1. 机器学习的定义2. 机器学习的类型(1)监督学习(Supervised Learning)(2)无监督学习(Unsupervised Learning)(3)半…...
深入了解 MySQL 锁机制
MySQL作为一个常用的关系型数据库系统,其事务处理能力强大,并提供了丰富的锁机制以保障数据的一致性和并发操作的有效性。在多用户并发操作的环境中,锁是控制资源访问的重要工具。本文将详细介绍MySQL中锁的分类及其具体应用,包括…...
ubuntu的ubuntu--vg-ubuntu--lv磁盘扩容
在我们安装ubuntu时,如果选择的是自动分区,就会按照逻辑卷的形式来分区,并且只分配100G其余的并不会被分配,这对我们大多数情况来说都是不合理的,所以,如何扩充呢 下面以一个小的案例来说明如何扩充 问题…...
音视频开发---常用工具
一、VLC播放器 1. 简介 VLC多媒体播放器(最初命名为VideoLAN客户端)是VideoLAN计划的多媒体播放器。它支持众多音频与视频解码器及文件格式,并支持DVD影音光盘、VCD影音光盘和各类流式协议。它也能作为unicast或multicast的流式服务器在IPv4或IPv6的高速连接下使用。 它融…...
9、tlm 事务交互通信
1、TLM(Transaction-Level Modeling) 是 SystemC 的高级建模方法,用于描述系统的通信行为,特别是在硬件设计和验证中。TLM 是 SystemC 的一部分,用于提高仿真的效率和抽象性。以下是 TLM 的核心知识以及关键概念。 2、…...
Kotlin 基础语法解析
详细的 Kotlin 基础语法解析,结合概念说明和实用场景: 一、变量与常量 1. 变量类型 val(不可变变量):声明后不可重新赋值,类似 Java 的 final。 val name “Kotlin” // 类型自动推断为 String// name …...
MaxEnt模型进阶:基于R语言自动化与GIS空间建模的物种栖息地精准预测
生物多样性的空间分布规律及其对环境变化的响应机制,是生态学与地理学研究的前沿议题。在气候变化加剧和人类活动干扰的双重压力下,如何精准预测物种潜在分布范围、识别关键环境驱动因子,已成为制定生物保护策略的核心科学问题。物种分布模型…...
微软 GraphRAG 项目学习总结
微软2024年4月份发布了一篇《From Local to Global: A GraphRAG Approach to Query-Focused Summarization》(GraphRAG:从局部到全局的查询式摘要方法)论文,提出了一种名为GraphRAG的检索增强生成(RAG)方法…...
C# dataGridView 自动生成几行几列及手动输入整型字符
C# dataGridView生成12号4列的表格 private void Form1_Load(object sender, EventArgs e) {// 清除默认列dataGridView1.Columns.Clear();// 添加4列(首列为序号列)dataGridView1.Columns.Add("ColIndex", "序号");dataGridView1.…...
CSS层叠顺序
介绍 在 CSS 中,元素的层叠顺序决定了当多个元素重叠时(跟布局没有完全的关系,也就是说层叠顺序只会在几个叠放元素上进行比较,而不会改变布局),哪个元素显示在最上面,哪个元素显示在最下面。 …...
QtAV入门
QtAV 是一个基于 FFmpeg 和 Qt 的高性能多媒体播放框架,提供强大的音视频解码、渲染和处理能力,适合开发跨平台的播放器、视频编辑和流媒体应用。 1. 核心功能 多格式支持 支持 H.264/H.265、VP9、AV1 等视频编码。 支持 MP3、AAC、Opus 等音频编码。 封装格式:MP4、MKV、…...
Day17 -实例:利用不同语言不同框架的特征 进行识别
前置:我们所需的web站点,都可以利用fofa去搜索,例如:app"flask"这样的语句去找对应的站点,找到后,我们模拟不知道是什么框架,再根据特征去判断它的框架。 ***利用工具可以再去结合大…...
Pycharm(八):字符串切片
一、字符串分片介绍 对操作的对象截取其中一部分的操作,比如想要获取字符串“888666qq.com前面的qq号的时候就可以用切片。 字符串、列表、元组都支持切片操作。 语法:字符串变量名 [起始:结束:步长] 口诀:切片其实很简单,只顾头来…...
leetcode 53.Maximum Subarray
分治法 //lSum表示[left,right]内以left为左端点的最大子段和 //rSum表示[left,right]内以right为右端点的最大字段和 //iSum表示[left,right]的区间和 int divide_conquer(int* nums,int left,int right,int *lSum,int *rSum,int *iSum){int maxSum;//表示[left,right]内的最…...
Mysql从入门到精通day5————子查询精讲
本文主要讲述子查询的几种方法,读者注意体会它们的不同场合的适用情况及功能,本篇文章也融入了小编实践过程遇到的坑,希望读者不要再踩坑 一.带IN关键字的子查询 in关键字可以检测结果集中是否存在某个特定的值,检测成功则执行外…...
虫洞数观系列二 | Python+MySQL高效封装:为pandas数据分析铺路
目录 系列文章 1. 引言 2. 常规写法mysql 3. 封装设计接口mysql 3.1dbname.py文件 3.1.1. 导入和基类定义 3.1.2. 具体表定义类 3.1.3. 表定义整合函数 3.1.4. 全局字典和测试代码 3.2mysql_dao文件 3.2.1. 模块导入与配置 3.2.2. 数据库连接池初始化 3.2.3. Comm…...
算法刷题-最近公共祖先-LCA
AcWing 1172 祖孙询问 一、题目描述 给定一棵包含 n 个节点的有根无向树,节点编号互不相同,但不一定是 1∼n。 有 m 个询问,每个询问给出了一对节点的编号 x 和 y,询问 x 与 y 的祖孙关系。 输入格式 第一行一个整数 n 表示节…...
MySQl之Binlog
前言 Binlog(Binary Log)是MySQL中至关重要的日志模块,它直接关系到数据恢复、主从复制等高阶架构设计。无论你是刚入门的新手还是有一定经验的开发者,掌握Binlog的原理和应用都是进阶的必经之路。 BinLog是什么? Bin…...
开源项目解读(https://github.com/zjunlp/DeepKE)
1.DeepKE 是一个开源的知识图谱抽取与构建工具,支持cnSchema、低资源、长篇章、多模态的知识抽取工具,可以基于PyTorch实现命名实体识别、关系抽取和属性抽取功能。同时为初学者提供了文档,在线演示, 论文, 演示文稿和海报。 2.下载对应的de…...
「MethodArgumentTypeMismatchException:前端传递 ‘undefined‘ 导致 Integer 类型转换失败」
遇到的问题: Failed to convert value of type java.lang.String to required type java.lang.Integer; nested exception is java.lang.NumberFormatException: For input string: "undefined" 原因分析: 大致意思就是我传递的参数到后端没…...
LabVIEW故障诊断数据处理方法
在LabVIEW故障诊断系统中,数据处理直接决定诊断的准确性和效率。工业现场常面临噪声干扰、数据量大、实时性要求高等挑战,需针对性地选择处理方法。本文结合电机故障诊断、轴承损伤检测等典型案例,详解数据预处理、特征提取、模式识别三大核心…...
基于 SpringBoot 的火车订票管理系统
收藏关注不迷路!! 🌟文末获取源码数据库🌟 感兴趣的可以先收藏起来,还有大家在毕设选题(免费咨询指导选题),项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多…...
Python的概论
免责声明 如有异议请在评论区友好交流,或者私信 内容纯属个人见解,仅供学习参考 如若从事非法行业请勿食用 如有雷同纯属巧合 版权问题请直接联系本人进行删改 前言 提示:: 提示:以下是本篇文章正文内容,…...
构建大语言模型应用:句子转换器(Sentence Transformers)(第三部分)
本系列文章目录 简介数据准备句子转换器(本文)向量数据库搜索与检索大语言模型开源检索增强生成评估大语言模型服务高级检索增强生成 RAG 在之前的博客中,我们学习了为RAG(检索增强生成,Retrieval Augmented Generati…...
怎样提升大语言模型(LLM)回答准确率
怎样提升大语言模型(LLM)回答准确率 目录 怎样提升大语言模型(LLM)回答准确率激励与规范类知识关联类情感与语境类逆向思维类:为什么不,反面案例群体智慧类明确指令类示例引导类思维引导类约束限制类反馈交互类:对话激励与规范类 给予奖励暗示:在提示词中暗示模型如果回…...
【进阶】vscode 中使用 cmake 编译调试 C++ 工程
基于 MSYS2 的 MinGW-w64 GCC 工具链与 CMake 构建系统,结合VSCode及其扩展插件( ms-vscode.cmake-tools),可实现高效的全流程C开发调试。既可通过 VSCode 可视化界面(命令面板、状态栏按钮)便捷完成配置、…...
