首页 > 其他分享 >【Django5】视图的定义与使用

【Django5】视图的定义与使用

时间:2024-07-12 12:31:35浏览次数:10  
标签:200 定义 index Django5 视图 响应 状态 模板

系列文章目录

第四章 视图的定义与使用


文章目录


一、视图定义

视图(Views)是Django的MTV框架模式的V部分,主要负责处理用户请求和生成相应的响应内容,然后在页面或其他类型文档中显示

  • Model(模型):业务对象与数据库的对象(ORM)
  • Template(模板):负责如何把页面展示给用户
  • View(视图):负责业务逻辑,并在适当的时候调用Model和Template

在这里插入图片描述

二、设置视图响应状态

客户端请求后端服务,在view.py视图层方法最终return 返回视图响应。Python内置提供了响应类型,来实现不同的返回不同的http状态码;

响应类型解释说明
HttpResponse(‘Hello world’")状态码200,请求已成功被服务器接收
HttpResponseRedirect(‘/’)状态码302,重定向首页地址
HttpResponsePermanentRedirect(‘/’)状态码301,永久重定向首页地址
HttpResponseBadRequest("‘400’)状态码400,访问的页面不存在或请求错误
HttpResponseNotFound('404")状态码404,网页不存在或网页的URL失效
HttpResponseForbidden(‘403’)状态码403,没有访问权限
HttpResponseNotAllowed(‘405’)状态码405,不允许使用该请求方式
HttpResponseServerError(‘500’")状态码500,服务器内容错误
JsonResponse( {‘foo’ : ‘bar’})默认状态码200,响应内容为JSON数据
StreamingHttpResponse()默认状态码200,响应内容以流式输出

下面我们举几个例子来实操下视图响应状态应用;

实例一:HttpResponse

修改helloWorld的views.py的index函数:

def index(request):
    html = ("<font color='red'>我是helloworld里的views里的index函数</font>")
    return HttpResponse(html, status=200)

访问测试http://127.0.0.1:8000/index/
在这里插入图片描述
请求测试,状态码200,返回网页信息。status=200不写的话默认也是200.

实例二: HttpResponseNotFound 404

views.py里写入代码

def index(request):
    return HttpResponseNotFound()

请求测试,状态码404。
在这里插入图片描述

实例三:JsonResponse 响应json数据

def index(request):
    return JsonResponse({'foo': 'bar'})

运行测试
在这里插入图片描述

我们第一个实例用到的是HttpResponse,简单网页我们直接可以响应到页面,但是假如是复杂网页,就会增加视图函数的代码量。所以我们引入模版,通过django提供的render方法渲染数据到模版,然后再响应到页面
查看render源代码
在这里插入图片描述
request和template_name是必须的参数。其他参数可选。

  • request:浏览器向服务器发送的请求对象,包含用户信息、请求内容和请求方式等。
  • template_name:设置模板文件名,用于生成网页内容。
  • context:对模板上下文(模板变量)赋值,以字典格式表示,默认情况下是一个空字典。
  • content_type:响应内容的数据格式,一般情况下使用默认值即可。
  • status: HTTP状态码,默认为200.
  • using:设置模板引擎,用于解析模板文件,生成网页内容。

我们再写一个带字典参数的render渲染模版实例:

views.py里添加代码:

def index(request):
    context_values = {
        'name': 'zhangsan',
        'age': 18,
        'hobby': ['football', 'basketball', 'swimming'],
        'info': {'name': 'zhangsan', 'age': 18, 'hobby': ['football', 'basketball', 'swimming']
    }
}
    return render(request, 'index.html', context=context_values)

index.html代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>第一个页面</title>
</head>
<body>
<p>你好啊,</p>
<p>我叫{{name}}</p>
<p>今年{{age}}</p>
<p>爱好是{{hobby}}</p>
<p>再说一遍{{info}}</p>


</body>
</html>

运行测试结果为:
在这里插入图片描述

总结

本章主要介绍了视图(view)的相关配置,也引入了模板的概念,下一章将介绍模板的相关配置。

标签:200,定义,index,Django5,视图,响应,状态,模板
From: https://blog.csdn.net/sishihao/article/details/140370214

相关文章

  • 演示:【Avalonia-Controls】Avalonia皮肤,主题,自定义控件,数据库,系统模块资源库
    一、目的:分享一个Avalonia皮肤,主题,自定义控件,数据库,系统模块资源库开源地址:GitHub-HeBianGu/Avalonia-Controls:Avalonia控件库Nuget包地址:NuGetGallery|PackagesmatchingHeBianGu.AvaloniaUI.演示视频地址:【Avalonia-Controls】Avalonia工具组件皮肤库v1.0.0_......
  • 最新AI一站式系统源码-ChatGPT商业版系统源码,支持自定义AI智能体应用、AI绘画、AI视频
     一、前言人工智能语言模型和AI绘画在多个领域都有广泛的应用.....SparkAi创作系统是一款基于ChatGPT和Midjourney开发的智能问答和绘画系统,提供一站式AIB/C端解决方案,涵盖AI大模型提问、AI绘画、AI视频、文档分析、图像识别和理解、TTS&语音识别、AI换脸等多项功能。......
  • TS定义数组 ts声明函数
    ts定义数组//定义整数型数组constarr1:number[]=[]constarr1_1:Array<number>=[]//定义字符窜型数组constarr2:string[]=[]constarr2_1:Array<string>=[]//定义对象型数组constarr3:object[]=[]constarr3_1:Array<Object>......
  • 多线程中自定义线程池与shiro导致的权限错乱问题解决
    importorg.apache.shiro.SecurityUtils;importorg.apache.shiro.subject.Subject;importorg.apache.shiro.util.ThreadContext;importjava.util.concurrent.*;publicclassShiroAwareThreadPoolExecutorextendsThreadPoolExecutor{publicShiroAwareThread......
  • 自定义PageHelper分页工具
    今天写了一个需要用到分页查询的需求大概是这样的有一张项目表和一张报警表如下:项目表:报警表:现在我就是要根据这个项目名称,报警类型和报警时间来查询报警列表.项目可以模糊查询,看似是很简单的一个需求,但是我遇到了一个问题我的大概思路就是先用项目名称去项目表......
  • C语言基础:函数的定义、调用和递归
    在C语言中,函数是一段完成特定任务的代码块,可以被多次调用和重复使用,有助于提高程序的模块化和可维护性。函数通过定义和调用来实现。函数的定义函数的定义包括函数的声明和函数体,其中函数的声明用于告诉编译器函数的名称、参数类型和返回类型,而函数体则包含了具体的实现......
  • Mysql中存储过程、存储函数、自定义函数、变量、流程控制语句、光标/游标、定义条件和
    场景存储过程存储过程是一组为了完成特定功能的SQL语句集合。使用存储过程的目的是将常用或复杂的工作预先用SQL语句写好并用一个指定名称存储起来,这个过程经编译和优化后存储在数据库服务器中,因此称为存储过程。当以后需要数据库提供与己定义好的存储过程的功能相同的服务时,......
  • gd32F470串口重定义
    c代码:/**@Author:Bleaach008*@Date:2024-07-1017:31:01*@LastEditTime:2024-07-1109:42:06*@FilePath:\MDK-ARMd:\Code\GD32\GD01_UART\MyApplication\Public.c*@Description:**Copyright(c)2024by008,AllRightsReserved.*//*Incl......
  • Perl词法作用域:自定义编程环境的构建术
    ......
  • WHAT - Tailwind 样式方案(不写任何自定义样式)
    目录一、官网二、设计理念三、示例DesignSystem一、官网https://tailwindcss.com/TailwindCSSworksbyscanningallofyourHTMLfiles,JavaScriptcomponents,andanyothertemplatesforclassnames,generatingthecorrespondingstylesandthenwrit......