热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

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

三板斧

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"


# 从请求的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()),

 

 

 

 

 


推荐阅读
  • 基于layUI的图片上传前预览功能的2种实现方式
    本文介绍了基于layUI的图片上传前预览功能的两种实现方式:一种是使用blob+FileReader,另一种是使用layUI自带的参数。通过选择文件后点击文件名,在页面中间弹窗内预览图片。其中,layUI自带的参数实现了图片预览功能。该功能依赖于layUI的上传模块,并使用了blob和FileReader来读取本地文件并获取图像的base64编码。点击文件名时会执行See()函数。摘要长度为169字。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 阿,里,云,物,联网,net,core,客户端,czgl,aliiotclient, ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • 个人学习使用:谨慎参考1Client类importcom.thoughtworks.gauge.Step;importcom.thoughtworks.gauge.T ... [详细]
  • 猜字母游戏
    猜字母游戏猜字母游戏——设计数据结构猜字母游戏——设计程序结构猜字母游戏——实现字母生成方法猜字母游戏——实现字母检测方法猜字母游戏——实现主方法1猜字母游戏——设计数据结构1.1 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • 使用正则表达式爬取36Kr网站首页新闻的操作步骤和代码示例
    本文介绍了使用正则表达式来爬取36Kr网站首页所有新闻的操作步骤和代码示例。通过访问网站、查找关键词、编写代码等步骤,可以获取到网站首页的新闻数据。代码示例使用Python编写,并使用正则表达式来提取所需的数据。详细的操作步骤和代码示例可以参考本文内容。 ... [详细]
  • 本文介绍了使用cacti监控mssql 2005运行资源情况的操作步骤,包括安装必要的工具和驱动,测试mssql的连接,配置监控脚本等。通过php连接mssql来获取SQL 2005性能计算器的值,实现对mssql的监控。详细的操作步骤和代码请参考附件。 ... [详细]
  • SpringMVC接收请求参数的方式总结
    本文总结了在SpringMVC开发中处理控制器参数的各种方式,包括处理使用@RequestParam注解的参数、MultipartFile类型参数和Simple类型参数的RequestParamMethodArgumentResolver,处理@RequestBody注解的参数的RequestResponseBodyMethodProcessor,以及PathVariableMapMethodArgumentResol等子类。 ... [详细]
  • MVC设计模式的介绍和演化过程
    本文介绍了MVC设计模式的基本概念和原理,以及在实际项目中的演化过程。通过分离视图、模型和控制器,实现了代码的解耦和重用,提高了项目的可维护性和可扩展性。详细讲解了分离视图、分离模型和分离控制器的具体步骤和规则,以及它们在项目中的应用。同时,还介绍了基础模型的封装和控制器的命名规则。该文章适合对MVC设计模式感兴趣的读者阅读和学习。 ... [详细]
  • JavaScript和HTML之间的交互是经由过程事宜完成的。事宜:文档或浏览器窗口中发作的一些特定的交互霎时。能够运用侦听器(或处置惩罚递次来预订事宜),以便事宜发作时实行相应的 ... [详细]
  • 本文介绍了如何使用jQuery和AJAX来实现动态更新两个div的方法。通过调用PHP文件并返回JSON字符串,可以将不同的文本分别插入到两个div中,从而实现页面的动态更新。 ... [详细]
  • 网络请求模块选择——axios框架的基本使用和封装
    本文介绍了选择网络请求模块axios的原因,以及axios框架的基本使用和封装方法。包括发送并发请求的演示,全局配置的设置,创建axios实例的方法,拦截器的使用,以及如何封装和请求响应劫持等内容。 ... [详细]
author-avatar
shamrock-wrh_186
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有