自定义一个response、在响应头中放数据、函数和方法的区别、开启media访问、页面静态化

【1】自定义一个response

# 类似JsonResponse函数的方法class JS(HttpResponse):def __init__(self,data):res = json.dumps(data)return super().__init__(res)

【2】在响应头中放数据的方式

  • 1、Httpresponse
    • 方式一:直接传headers参数,header默认是一个空字典
    • 方式二:利用字典传值方式
from django.shortcuts import render,HttpResponse,redirect# 方式一
def inde(request):return HttpResponse('ok',headers={'xxx','xxx'})# 方式二def index(request):res = HttpRespose('ok')res['xxx'] = 'xxx'return res
  • 2、JsonResponse
    • 直接传headers参数
    • 使用字段传值方式
  • 3、render
    • 只能使用字典传值方式
  • 4、redirect
    • 只能使用字典传值方式

使用字典传值方式是通用的,每个方式都能使用

【3】函数和方法的区别

函数:传值时,有几个参数就要传几个参数

 

函数调用时,不会自动传值


方法:方法传值时,会把自己当成第一个参数传递给方法的第一个参数

 

方法调用时,会自动传值


利用模块查看一个函数是方法还是函数 

                

from  types  import  FunctionType,MethodTypedef index():pass使用:print(isinstance(add,FunctionType))    #  Trueprint(isinstanc(add,MythodType))        # False

【4】开启meida访问

        步骤一

       在项目的根目录下创建一个media文件夹

        步骤二

然后在settings.py文件夹中配置路径

MEDIA_ROOT =os.path.join(BASE_DIR,'media')

        步骤三

配置路由:

         

from django.conf import settingsfrom django.views.static import serve
from 项目名 import settingspath('media/<path:path>',serve,kwargs={'document_root':settings.MEDIA_ROOT})'''
from django.conf import settings ----------- django内置的django有两个配置文件,一个项目自己的,一个是内置的如果自己配置了,就是用自己配置的,如果没有配置就使用内置的(conf) ----- 内置的如果使用自己配置的,路径没有找到,就找不到如果使用内置的,路径找不到就会使用内置的
'''

                

如果在settings.py文件中,配置了static文件夹,会自动开启media,在浏览器中可以直接访问。

因为上述原因,所以在static文件夹下不要存重要内容

        

        配置static:        

        

STATICFILES_DIRS = [os.path.join(BASE_DIR,'static')]

media文件及在static文件下面

media上传图片,并在前端页面中显示图片

# from django_demo04 import settings  # django 有两套配置文件--》一套是项目自己的,一套内置的
def upload_img(request):myfile = request.FILES.get('myfile')print(settings.MEDIA_ROOT)# print(settings.MEDIA_URL)# with open(settings.MEDIA_ROOT + '/%s' % myfile.name, 'wb') as f:with open('media/%s' % myfile.name, 'wb') as f:for line in myfile:f.write(line)# 图片上传成功后,想在浏览器中输入:http://127.0.0.1:8000/media/default.png就能访问到#1 static文件夹,配置文件写好了,会自动开启'''1 static文件夹,配置文件写好了,会自动开启# static 文件夹,只要配置如下,就会自动开启---》浏览器中可以直接访问到它---》所以在static文件夹下不要重要内容,因为客户端可以直接下载访问STATIC_URL = '/static/'STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')]2 我们想让media这个文件夹像static文件夹一样,能被用户浏览器访问---》自己开启路由-->url中写路由访问的路径是:http://127.0.0.1:8000/       media/default.png-正则方法  re_path  re_path('^media/(?P<path>.*)', serve, kwargs={'document_root': settings.MEDIA_ROOT}),media/      img/default.png访问meida这种路径,django会去 document_root指定的文件夹下找对应的文件-转换器   pathpath('media/<path:path>', serve, kwargs={'document_root': settings.MEDIA_ROOT})3 以后想开启media的访问1 在项目根路径创建media文件2 在配置文件中配置MEDIA_ROOT = os.path.join(BASE_DIR, 'media')3 路由中配置:path('media/<path:path>', serve, kwargs={'document_root': settings.MEDIA_ROOT})'''return HttpResponse('图片上传成功')

【5】页面静态化

-只要用户访问---》就会去查
-做成静态化# 有些页面访问频率很高
from .models import Book
from django.conf import settings
from django.template import Template, Context
def books_view(request):# 做静态化if os.path.exists(os.path.join(settings.BASE_DIR, 'cache', 'books.html')):print('不走数据库')with open('cache/books.html', 'rt', encoding='utf-8') as f:res_str = f.read()return HttpResponse(res_str)else:books = Book.objects.all()with open('templates/books.html', 'rt', encoding='utf-8') as f:res = f.read()t = Template(res)c = Context({'books': books})html = t.render(c)# 保存起来with open('cache/books.html', 'wt', encoding='utf-8') as f:f.write(html)return HttpResponse(html)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/186712.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

积分表一(高等数学同济版中所有的积分公式)

文章目录 含有 a x b axb axb的积分含有 a x b \sqrt{axb} axb ​ 的积分含有 x 2 a x^2 \pm a x2a 的积分含有 a x 2 b ax^2 b ax2b 的积分含有 a x 2 b x c ax^2bxc ax2bxc 的积分含有 x 2 a 2 ( a > 0 ) \sqrt{x^2a^2} \quad (a>0) x2a2 ​(a>0) 的积分含有…

使用vscode的remotessh插件远程连接的时候被要求重复输入密码

问题描述&#xff1a; 需要远程连接服务器&#xff0c;使用ssh&#xff0c;我用到的是vscode里面的remotessh插件。配置好config以后 HostHostNameUserPortIdentifyFile进入到了vscode的密码登录界面&#xff0c;但是一直被要求循环输入密码&#xff0c;很奇怪&#xff0c;去…

论文阅读——DINOv

首先是关于给了提示然后做分割的一些方法的总结&#xff1a; 左边一列是prompt类型&#xff0c;右边一列是使用各个类型的prompt的模型。这些模型有分为两大类&#xff1a;Generic和Refer&#xff0c;通用分割和参考分割。Generic seg 是分割和提示语义概念一样的所有的物体&am…

LLM之Agent(二):BabyAGI的详细教程

BabyAGI是一个 AI 支持的任务管理系统&#xff08;Python脚本&#xff09;&#xff0c;使用 OpenAI 和 Pinecone API 创建, 优先级排序和执行任务。该系统背后的主要思想是基于先前任务的结果和预定义的目标创建任务。脚本然后使用 OpenAI 的自然语言处理&#xff08;NLP&#…

leetCode 93.复原 IP 地址 + 回溯算法 + 图解 + 笔记

93. 复原 IP 地址 - 力扣&#xff08;LeetCode&#xff09; 有效 IP 地址 正好由四个整数&#xff08;每个整数位于 0 到 255 之间组成&#xff0c;且不能含有前导 0&#xff09;&#xff0c;整数之间用 . 分隔。 例如&#xff1a;"0.1.2.201" 和 "192.168.1.1…

CS 2520nonono

CS 2520nonono WeChat&#xff1a;yj4399_​​​​​ Sina Visitor System High-level●3 Congestion Control Algorithms:○TCP Reno:■additive increase, multiplicative decrease function to adjust window size for every RTTuntil a packet loss is detected○TCP CUBI…

编程的重要性及解决技术难题的方法

看到这个话题之后&#xff0c;出于好奇&#xff0c;使用某chat&#xff0c;输入相应主题得到的一篇文章&#xff0c;分享给大家。 PS&#xff1a;现在不同版本的chat和其快速更新升级也可以说是编程的结果&#xff0c;其重要性和发展历程也反映了编程的重要性。 一、编程的重要…

关于java agent

关于java agent技术,可以看看这个文章, 聊聊JavaAgent - 知乎

详解ClickHouse的ReplaceMergeTree

区别于MergeTree表引擎&#xff0c;ReplacingMergeTree删除重复数据时是通过相同的分区值&#xff08;ORDER BY的值&#xff09; 数据去重发生在后台合并数据时&#xff0c;后台合并数据是随机的&#xff0c;所以有时会有一些没处理的数据&#xff0c;可以通过OPTIMIZI来手动合…

python-元组和列表的异同

Python中的元组&#xff08;Tuple&#xff09;和列表&#xff08;List&#xff09;都是用于存储多个元素的数据结构&#xff0c;但它们有一些关键的区别。 相同点&#xff1a; 存储多个元素&#xff1a; 元组和列表都可以用来存储多个元素。 可迭代&#xff1a; 两者都支持迭…

用java实现拼图小游戏

1、了解拼图游戏基本功能&#xff1a; 拼图游戏内容由若干小图像块组成的&#xff0c;通过鼠标点击图像块上下左右移动&#xff0c;完成图像的拼凑。 2、拼图游戏交互界面设计与开发&#xff1a; 通过创建窗体类、菜单、中间面板和左右面板完成设计拼图的交互界面 &#xff…

分享从零开始学习网络设备配置--任务4.3 使用动态路由RIPng实现网络连通

任务描述 某公司使用IPv6技术搭建企业网络&#xff0c;由于静态路由需要管理员手工配置&#xff0c;在网络拓扑发生变化时&#xff0c;也不会自动生成新的路由&#xff0c;因此采用IPv6动态路由协议RIPng实现网络连通&#xff0c;实现任意两个节点之间的通信&#xff0c;并降低…

基于SpringBoot学生读书笔记共享

摘 要 本论文主要论述了如何使用JAVA语言开发一个读书笔记共享平台 &#xff0c;本系统将严格按照软件开发流程进行各个阶段的工作&#xff0c;采用B/S架构&#xff0c;面向对象编程思想进行项目开发。在引言中&#xff0c;作者将论述读书笔记共享平台的当前背景以及系统开发的…

Python 2进制按位取反

根据一checksum算法需要将一些参数按位取反 例&#xff1a;参数 13 数字13二进制为1101 [((x)) for x in str(bin(13))] [0, b, 1, 1, 0, 1] 除去0b字符串然后按位取反得到0010 [(1^int(x)) for x in str(bin(13)).replace(0b,)] [0, 0, 1, 0]然后将得到的2进制转换成十进制…

第16关 革新云计算:如何利用弹性容器与托管K8S实现极速服务POD扩缩容

------> 课程视频同步分享在今日头条和B站 天下武功&#xff0c;唯快不破&#xff01; 大家好&#xff0c;我是博哥爱运维。这节课给大家讲下云平台的弹性容器实例怎么结合其托管K8S&#xff0c;使用混合服务架构&#xff0c;带来极致扩缩容快感。 下面是全球主流云平台弹…

第一百八十四回 自定义Radio组件

文章目录 1. 概念介绍2. 思路与方法2.1 实现思路2.2 实现方法3. 代码与效果3.1 示例代码3.2 运行效果4. 内容总结我们在上一章回中介绍了"如何给图片添加阴影"相关的内容,本章回中将介绍 自定义Radio组件.闲话休提,让我们一起Talk Flutter吧。 1. 概念介绍 我们在…

对抗产品团队中的认知偏误:给产品经理的专家建议

今天的产品经理面临着独特的挑战。他们不仅需要设计和构建创新功能&#xff0c;还必须了解这些功能将如何为客户带来价值并推进关键业务目标。如果不加以控制&#xff0c;认知偏差可能会导致您构建的内容与客户想要的内容或业务需求之间不一致。本文将详细阐述产品经理可以避免…

下载MySQL JDBC驱动的方法

说明 java代码通过JDBC访问MySQL数据库&#xff0c;需要MySQL JDBC驱动。 例如&#xff0c;下面这段代码&#xff0c;因为找不到JDBC驱动&#xff0c;所以执行会报异常&#xff1a; package com.thb;public class JDBCDemo {public static void main(String[] args) throws …

【传智杯】排排队、小卡与质数 2、1024 程序员节发橙子题解

&#x1f34e; 博客主页&#xff1a;&#x1f319;披星戴月的贾维斯 &#x1f34e; 欢迎关注&#xff1a;&#x1f44d;点赞&#x1f343;收藏&#x1f525;留言 &#x1f347;系列专栏&#xff1a;&#x1f319; 蓝桥杯 &#x1f319;请不要相信胜利就像山坡上的蒲公英一样唾手…

网络基础_1

目录 网络基础 协议 协议分层 OSI七层模型 网络传输的基本流程 数据包的封装和分用 IP地址和MAC地址 网络基础 网络就是不同的计算机之间可以进行通信&#xff0c;前面我们学了同一台计算机之间通信&#xff0c;其中有进程间通信&#xff0c;前面学过的有管道&#xff…