Django HttpResponse响应-程序员宅基地

技术标签: python  django  Django  

1.HttpResponse

1)Django服务器接收到客户端发送过来的请求后,会将提交上来的数据封装成httpRequest对象传给视图函数。那么视图处理完相关逻辑后,也需要返回一个响应给浏览器。而这个响应必须返回HttpResponseBase或者他的子类的对象
2)可以使用django.http.HttpResponse来构造响应对象
3) HttpRequest对象由Django创建,HttpResponse对象或子对象由开发人员创建。

response = HttpResponse(content=响应体, content_type=响应体数据类型,默认为text/html, status=状态码,默认为200)

class TestQuery(View):

    def get(self, request):
    	#HttpResponse默认返回的是html字符串类型的数据,
    	#如果我们要响应html字符串以外的数据该如何实现?
    	#比如要响应图片格式
    	#HttpResponse(content=图片的原始数据, content_type=响应体数据类型,默认为image/jpg, status=状态码,默认为200)
        response = HttpResponse('test')
        return response

在这里插入图片描述

在这里插入图片描述

2. JsonResponse:响应JSON

1)在开发功能时,如果前端需要JSON数据,那么后端就需要构造并响应JSON数据,这也是我们在开发中使用最多的。
2)而Django提供了JsonResponse来构造并响应JSON数据
3)JsonResponse作用:
帮助我们将响应的数据转换为JSON字符串
设置响应头Content-Type为 application/json

class TestQuery(View):

    def get(self, request):
        # 准备要响应的数据
        dict_data = {
    
            'name': 'lx',
            'age': 100
        }
        # 使用JSONResponse构造并响应JSON数据
        return JsonResponse(dict_data)

在这里插入图片描述

3. redirect():重定向

在开发中,我们经常会遇到一种需求,当某个逻辑操作完成后,将用户引导到另外一个逻辑、页面中
比如:用户注册、登录成功后,直接将用户引导到网站首页

解决办法:可以使用重定向

redirect():重定向
from django.shortcuts import render, redirect

class Index(View):
  

    def get(self, request):
        return HttpResponse('网站首页')

class LoginView(View):
   
    def post(self, request):       
 	     return redirect('/index/') #别忘了 路径前面要加反斜线表示根路径

在这里插入图片描述

4. redirect()重定向 搭配 反向解析

1)首先要考虑的问题是,我们要重定向的地址会不会更改会不会在某次版本更新迭代的时候被修改,如果很多地方都用到了这个地址那么是不是这些地方都要做修改?
需求:
能否可以实现一种效果,可以保证即使在版本迭代时,使用了新设计的地址替换了路由中原有的地址,我们之前编写的使用该地址的代码不用去修改,达到动态获取的目的。.

解决方案:
路由反向解析
路由反向解析 是使用路由的别名,动态的解析出该路由中的真实地址

总路由

urlpatterns = [
    path('admin/', admin.site.urls),
    #这里的namespace是可以使用任意的名字,但是为了易于理解可以使用子应用的名字
        # 如果定义了namespace,那么一定要定义app_name 不然会报错
    path('', include(('pratice_1.urls',"pratice_1"),namespace="pratice_1"))
]

子路由

urlpatterns = [

    # 测试重定向
    path('login/', views.LoginView.as_view()),
    # 给要跳转的目标地址起别名,这个名字也可以随便写,但是最好写一个见文知意的
    path('index/', views.Index.as_view(),name='index'),
]

class Index(View):


    def get(self, request):
        return HttpResponse('网站首页')


class LoginView(View):


    def post(self, request):
                                #总路由别名:子路由别名
        redirect_url = reverse('pratice_1:index')
        #要跳转的目标地址
        return redirect(redirect_url)

include() 源码
在这里插入图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_47906106/article/details/119710448

智能推荐

安泰ATS-2420C高精度电流源-安泰测试Agitek-程序员宅基地

文章浏览阅读447次,点赞6次,收藏9次。ATS-2420C高精度电流源简介:ATS-2420C是一款高精度的通用电流源。最大输出3A的电流,最小电流分辨500pA,输出精度高。操作面板液晶显示,简洁易懂,易于操作。ATS-2420C高精度电流源功能特点:最大输出电流3A高精度、高稳定性电流输出连续可调,精度高达5½位最小电流分辨率500pA四象限精密电流源。

数据中心架构-程序员宅基地

文章浏览阅读1.2k次。2019独角兽企业重金招聘Python工程师标准>>> ..._数据中心的物理基础架构:

Yolov1 + Yolov2 + Yolov3 发展史、论文、代码最全资源分享合集 ! ! !_yolov用什么语言-程序员宅基地

文章浏览阅读1.8k次,点赞4次,收藏36次。点击上方“码农的后花园”,选择“星标”公众号 精选文章,第一时间送达YOLO之父Jeseph Redmon毕业于美国米德尔伯里学院计算机科学专业,辅修数学,他主要研究范围是..._yolov用什么语言

离散 Hopfield 神经网络的分类与matlab实现_离散hopfield神经网络 科研能力分类 例子 matlab-程序员宅基地

文章浏览阅读738次。科研能力是高校的核心能力,其高低已成为衡量一所高校综合实力的重要指标。科研能力的高低不仅影响高校自身的发展,对高校所在地区的经济发展也有很大的影响。如何准确评价高校的科研能力已成为摆在政府、企业和高校面前的一个十分重要的问题。影响科研能力的因素众多,且互相交叉,互相渗透和互相影响,无法用确定的数学模型进行描述。目前,高校科研能力评价的方法很多,但普遍存在工作繁琐、时间滞后等缺点,且人为主观因素对评价结果有很大的影响。如何快速,准确地对众多高校的科研能力进行客观、公正地评价?这是一个目前亟待解决的问题。_离散hopfield神经网络 科研能力分类 例子 matlab

VUE移动到指定位置(scrollIntoView)----亲测避坑_scrollintoview的坑-程序员宅基地

文章浏览阅读1.6w次,点赞6次,收藏20次。用(scrollIntoView)来实现移动到指定位置建议不要放在(mt-loadmore)里使用,不然头部会被挤上去----亲测html<div id="pronbit" ref="pronbit">需要移动到的位置</div>js//选中iddocument.getElementById(e).scrollIntoView({ behavior: "sm..._scrollintoview的坑

SyntaxErrorException系列日记一:FUNCTION xxxxxx.xxxxxx does not exist_function test.collection_set does not exist-程序员宅基地

文章浏览阅读4.2k次。错误记录:FUNCTION mytest.CONCATE does not exist 如下:CONCATE是错误的一般应该检查函数是否拼写错误SELECT city_id ,city_name,airport_name,city_code,city_pinyin,city_abbreviation FROM city_airport WHERE 1=1 AND city_function test.collection_set does not exist

随便推点

/proc/meminfo 解读_/proc/meminfo与memblock的区别-程序员宅基地

文章浏览阅读3.4k次。Linux kernel 说明文档/proc/meminfo 记录系统内存信息。参考 Linux 内核说明:proc.txt以下项目并不是每一个 Linux 系统上都有的,根据你的 Linux 设计和版本,可能多出或者少了某些项。 项目参考 Linux 中 /proc/meminfo 的含义 关于/proc/meminfo的理解..._/proc/meminfo与memblock的区别

Kubernetes 优雅停止 Pod,Pod停止前处理设定任务的最佳方式_kubectl stop pod-程序员宅基地

文章浏览阅读7.3k次,点赞3次,收藏9次。在 v1.5 之後,若要使用 --grace-period=0 就必須要搭配 --force 參數一起使用_kubectl stop pod

python+Django+vue+mysql+pycharm开发环境的搭建_搭建pycharm,django,sqlite3,vue环境-程序员宅基地

文章浏览阅读2.1w次,点赞23次,收藏243次。工作之余断断续续根据网上找到的教程进行环境搭建,搭建了多个。但是一直没有一个整体概念,到底该先做什么,后做什么,操作一步后,结果应该是怎样另外,网上的教程都是直接用命令行操作,用pycharm又应该怎么弄呢环境搭建好以后,应该怎么分目录结构,应该先从哪里的代码开始写,写了以后,又需要做哪些配置这些问题一直困扰着我,所以我决定边学边记录整理。也希望能帮助同为初学者的你少走一些..._搭建pycharm,django,sqlite3,vue环境

内存管理——采用可变分区方式(动态分区方式)完成对存储空间的管理(即存储空间的分配与回收工作)_题目 内存管理实验目的对内存管理的相关内容做进一步的理解。了解内存管理的-程序员宅基地

文章浏览阅读6.3k次,点赞24次,收藏97次。实验4 内存管理一、实验目的1、对内存管理的相关内容做进一步的理解。2、了解内存管理的主要任务。3、了解内存管理任务的主要实现方法。4、通过编程加深理解内存的分配、回收等主要算法的原理。二、实验内容及要求1、在该实验中,采用可变分区方式完成对存储空间的管理(即存储空间的分配与回收工作)。2、设计用来记录主存使用情况的数据结构:已分区表和空闲分区表。3、在设计好的数据结构上设计一个主存分配算法,要求实现的基本功能操作有:寻找空闲分区,空闲分区表的修改,已分区表的修改。4、在设计好的数据._题目 内存管理实验目的对内存管理的相关内容做进一步的理解。了解内存管理的

国外各种PLC通讯协议介绍-程序员宅基地

文章浏览阅读651次。3、西门子系列PLC主要包括其早期的S5和现在的S7-200、S7-300、S7-400等各型号PLC,早期的S5PLC 支持的是3964R协议,但是因为现在在国应用较少,除极个别改造项目外,很少有与其进行数据通讯的。1、美系厂家Rockwell ABRockwell的PLC主要是包括:PLC2、PLC3、PLC5、SLC500、ControlLogix等型号,PLC2和PLC3是早期型号,现在用的比较多的小型PLC是SLC500,中型的一般是ControlLogix,大型的用PLC5系列。

LaTeX 索引_\usepackage[t1]{fontenc}什么意思-程序员宅基地

文章浏览阅读6.5k次。在大型的文档中,例如书籍等,通常会有一个按字母顺序排列的列表来列出文档中的主要术语。通过 LaTeX 和 imakeidx 包,你可以轻松地在文档中创建索引表。_\usepackage[t1]{fontenc}什么意思

推荐文章

热门文章

相关标签