Django06:视图层/上传文件/request 方法补充/FBV与CBV

三板斧

HttpResponse, 
返回字符串类型render, 
返回html页面,而且在返回给浏览器之前,可以给html文件传值redirect
重定向

总结:视图函数必须返回一个HttpResponse对象, 查看源代码能发现。

 

JsonResponse对象

json用途:

前后端过渡,实现跨语言传递数据。

普通方式返回json

    data = {"name": "小黑", "age": 18}data2 = [11, 22, 33, 44]import json# data_str = json.dumps(data2)  # 把data序列化成json格式的字符串# return HttpResponse(data_str)#ensure_ascii=False  不会自动转码data_str = json.dumps(data,ensure_asrue=False)  # 把data序列化成json格式的字符串return HttpResponse(data_str)

 JsonResponse

    from django.http import JsonResponse#默认是字典。列表序列化,需要设置参数safe=Falsereturn JsonResponse(data2, safe=False)#读源码,加参数。 **表示打散字典,然后分配=return JsonResponse(data, json_dumps_params={'ensure_asrue=False':False})

 

form表单上传文件,及后端处理

method="post" enctype="multipart/form-data"

<form action="/upload/" method="post" enctype="multipart/form-data"><input type="file" name="upload_file"><input type="submit" value="开始上传">
</form>
# 从请求的FILES中获取上传文件的文件名,file为页面上type=files类型input的name属性值
filename = request.FILES["upload_file"].name#或者
file_obj=request.FILES.get('upload_file')
filename=file_obj.namewith open(filename, "wb") as f:# 从上传的文件对象中,一行一行读取for i in request.file_obj.chunks():# 写入本地文件f.write(i)

 

request 对象方法

request.method
request.POST
request.GET
request.FILESrequest.path #/app01/test/
#获取完整路径
request.get_full_path() #/app01/test/?filename=abcrequest.path_info #/app01/test/#原生浏览器发送过来的二进制数据。
request.body

 

FBV与CBV

CBV

能够根据请求方式不同,匹配到不同的方法执行。

from django.views import View
# CBV版 添加新的出版社
class AddPublisher(View):def get(self, request):print(request.path_info)print(request.body)print("=" * 120)return render(request, "add_publisher.html")def post(self, request):print(request.body)print("=" * 120)new_name = request.POST.get("publisher_name", None)if new_name:# 通过ORM去数据库里新建一条记录models.Publisher.objects.create(name=new_name)# 引导用户访问出版社列表页,查看是否添加成功  --> 跳转return redirect("/publisher_list/")else:error_msg = "出版社名字不能为空!"return render(request, "add_publisher.html", {"error": error_msg})
url(r'^add_publisher/', views.AddPublisher.as_view()),

 

 

 

 

 

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

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

相关文章

《Java核心技术 卷Ⅱ 高级特性(原书第10版)》一2.4.6 为克隆使用序列化

2.4.6 为克隆使用序列化 序列化机制有一种很有趣的用法&#xff1a;即提供了一种克隆对象的简便途径&#xff0c;只要对应的类是可序列化的即可。其做法很简单&#xff1a;直接将对象序列化到输出流中&#xff0c;然后将其读回。这样产生的新对象是对现有对象的一个深拷贝&…

谈谈ASP.NET Core过滤器和中间件的区别

什么是中间件中间件Middleware是所有请求都会执行的,适合用在权限校验,一些公用字段处理,例如分页信息获取.asp.net core 提供了IApplicationBuilder接口来让把中间件注册到asp.net的管道请求当中去&#xff0c;中间件是一个典型的AOP应用。下面是一个微软官方的一个中间件管道…

11 个 Nginx 参数性能优化工作

工作上&#xff0c;需要配置 Nginx&#xff0c;要投入生产使用&#xff0c;做了一点优化工作&#xff0c;加上以前也经常折腾 Nginx&#xff0c;故记下一些优化工作。 优化 Nginx 进程数量 配置参数如下&#xff1a; worker_processes 1; # 指定 Nginx 要开启的进程数&#xff…

如何在Windows 8中将旧控制面板添加到Metro Start屏幕

By default there is no way to easily access the old Control Panel in Windows 8, in order to get to it you have to go through the new Metro Control Panel or switch to Explorer. Here’s how to create your own tile for it. 默认情况下&#xff0c;无法轻松访问Wi…

vue子父组件间传值

父组件传值给子组件 props方式   父组件上1处声明传递的键并赋值&#xff0c;子组件2处使用props接收一下这个键就可以使用了。在父组件改变这个值的话子组件跟着一起响应&#xff0c;子组件改变这个值的话父组件不改变。次为响应式&#xff0c;但是也仅限于父组件的值变化子…

Django07:模板语法/标签/inclusion_tag/模版的继承

模板语法传值 列表&#xff1a;l[a,b,c] 集合&#xff1a;se{‘a’,yy,ss} 元组&#xff1a;t(111,222,333) render(request.index,html,locals()) 语法规律 {{}}:变量相关 {%%}:逻辑相关 {{func}} 会自动加括号执行&#xff0c;但不支持带参数&#xff1b; 带参数会不…

红象云腾发布新一代PB级高速大数据平台产品

ZD至顶网服务器频道 03月23日 新闻消息&#xff1a;在3月19日举办的China Hadoop Summit&#xff08;中国Hadoop技术峰会&#xff09;上&#xff0c;中国Hadoop大数据厂商红象云腾与OpenPOWER基金会共同发布红象云腾的新一代大数据产品,帮助企业高速处理PB规模数据。 此次发布…

个人笔记 Vue.js, Framework7, and Cordova / PhoneGap Template with Babel, Webpack and Hot Reloading...

为什么80%的码农都做不了架构师&#xff1f;>>> 模板创建项目 模板地址 更新package.json中的dependencies依赖到最新版本 当新建一个项目的时候&#xff0c;从其他项目的package.json里面copy一份dependencies过来。 但因为是新项目&#xff0c;我们想用各个依赖包…

dotnet-exec 0.12.0 released

dotnet-exec 0.12.0 releasedIntrodotnet-exec 是一个 C# 程序的小工具&#xff0c;可以用来运行一些简单的 C# 程序而无需创建项目文件&#xff0c;让 C# 像 python/nodejs 一样简单&#xff0c;而且可以自定义项目的入口方法&#xff0c;支持但不限于 Main 方法。Install/Upd…

美国用户现在可以下载其所有Apple帐户数据,这是操作方法

Starting today, Apple is allowing all US users to download a copy of every last bit of their data from the company. 从今天开始&#xff0c;Apple允许所有美国用户从该公司下载其数据的最后一部分的副本。 This feature has been available for EU users since May, th…

java 的原码、补码、反码小总结

先看一个代码吧: int h; return (key null) ? 0 : (h key.hashCode()) ^ (h >>> 16); 这个应该很熟悉吧,是 java 里 HashMap 的计算 hash 值的方法.这里有一个运算符 "^"&#xff0c;他其实就是使用补码来运算的.好了&#xff0c;那么我们下面来说说这些…

Django08:模型层(ORM)--测试脚本/必知的13条/神器的双下划线查询/多表操作

单表操作 django 自带的sqlite3数据库对日期格式不是很敏感&#xff0c;处理的时候容易出错。 测试脚本 测试环境准备&#xff1a;去manage.py 中拷贝钱四行代码&#xff0c;然后自己手写两行。 脚本无论在引用下面&#xff0c;还是单独开设PY文件都可以。 import os impor…

“互联网+”促传统企业三大转型

2015年是传统行业互联网化的元年。国家提出要制定“互联网”行动计划后&#xff0c;互联网旅游、互联网汽车、互联网三农、互联网物流、互联网医疗等开始起步。同时&#xff0c;面对不确定的移动互联网时代&#xff0c;互联网某些技术和模式还在进化、演变之中&#xff0c;每一…

开发高性能ASP.NET应用

本文是“.NET Conf China 2022”上我的一个分享&#xff0c;这里更细化的分享出来。分享分为四个部分&#xff1a;制定指示设计应用正确测试性能优化高性能&#xff1a;不一定是架构出来的&#xff0c;但一定是优化出来的。制定指标-收集首先把项目中的热路径API和核心API找出来…

Ethereum-EIPs

What is an EIP? Ethereum Improvement Proposal 以太坊改进建议的文档 这个文档向Ethereum社区提供信息&#xff0c;为Ethereum、Ethereum的进程、环境描述一个新特征&#xff0c;该EIP应当为该特征提供一个基本的技术描述和原理原理。该EIP作者有责任在社区和不同意见的文档…

Django08-1:模型层(ORM)--聚合查询/分组查询/F与Q查询/开启事务/常用字段及参数/自定义字段/数据库查询优化

聚合查询 单独使用时&#xff0c;用aggregate 1.只要是跟数据库相关的模块 基本都在django.db.models里面 如果没有应该在django.db里面 2. 聚合查询通常配合分组使用 from django.db.models import Avg, Sum, Max, Min, Count# 1.所有书的平均价格 resmodels.Book.objects.…

记事本状态栏不会自动_如何在记事本中同时启用状态栏和自动换行

记事本状态栏不会自动The status bar in Windows’ Notepad displays the current line number and column number of the cursor location. However, if you find that the Status Bar option on the View menu is grayed out, it may be because you have Word Wrap enabled…

洛谷P2587 [ZJOI2008] 泡泡堂

题目传送门 分析&#xff1a;一道策略游戏题&#xff0c;要求最大期望得分和最小期望得分。首先分析最大&#xff0c;很显然是可以用一种类似于田忌赛马的思维来做&#xff0c;将两队的实力按照从大到小&#xff08;其实从小到大也可以&#xff09;排序&#xff0c;然后就按照顺…

极端高温导致澳大利亚断网

&#xfeff;西澳大利亚首府珀斯因恶劣天气出现了网络连接问题&#xff0c; 网络故障不是由于暴风雨或闪电引起的&#xff0c;而是极端高温。本周一是珀斯有记录以来第六热的天&#xff0c;当天最高温度达到了44.4℃。因为创纪录的高温&#xff0c;澳大利亚宽带 服务商iiNet在当…

推荐一款采用 .NET 编写的 反编译到源码工具 Reko

今天给大家介绍的是一款名叫Reko的开源反编译工具&#xff0c;该工具采用C#开发&#xff0c;广大研究人员可利用Reko来对机器码进行反编译处理。我们知道.NET 7 有了NativeAOT 的支持&#xff0c;采用NativeAOT 编译的.NET程序 无法通过ILSpy 之类的传统工具得到源码&#xff0…