当前位置: 首页 > news >正文

简单视图函数

视图函数

文章目录

  • 视图函数
    • @[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.index
    path("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.index
    return HttpResponse("Hello, SimpleView App!")	# 返回对象文本

# Create your datetime views.

import datetime	# 导入日期和时间类型对象datetime

def 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错误视图。

在这里插入图片描述

相关文章:

  • (BFS)题解:P9425 [蓝桥杯 2023 国 B] AB 路线
  • 智能打印预约系统:微信小程序+SSM框架实战项目
  • 机器学习的一百个概念(6)最小最大缩放
  • Codeforces Round #1014 (Div. 2)
  • 三路排序算法
  • 本科lw指导
  • 鸿蒙NEXT开发Base64工具类(ArkTs)
  • 消息队列--RocketMQ
  • DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加行拖拽排序功能示例13,TableView16_13 键盘辅助拖拽示例
  • 【算法】快速幂
  • 6内存泄露问题的讨论
  • MySQL其他客户端程序
  • 边缘计算:工业自动化的智能新引擎
  • 低成本文件共享解决方案:Go File本地Docker部署与外网访问全记录
  • 小米平板 4 Plus 玩机日志
  • Xvfb和VNC Server是什么
  • 使用自定义的RTTI属性对对象进行流操作
  • 7对象树(1)
  • 文本分析(非结构化数据挖掘)——特征词选择(基于TF-IDF权值)
  • Java项目打包(使用IntelliJ IDEA打包Java项目)
  • 平安保险网站官方网址/餐饮营销策划与运营
  • 农产品网站的品牌建设/佛山网站建设方案咨询
  • 珠海企业集团网站建设/百度查询关键词排名工具
  • 网页是网站吗/windows优化大师免费
  • 合肥网站建设设计公司哪家好/网站权重查询
  • 岳阳博物馆网站/泉州网站seo公司