Django(五)

JsonResponse类的使用

# 1. 混合开发项目:前端页面和后端代码写到一块 # 2. 前后端分离项目:前端是一个项目,后端是一个项目,后端只需要写接口 json格式的数据:进行跨语言数据传输 import json '''支持的数据类型:str,list, tuple, dict, set''' # 序列化出来的数据是可以看得懂的,就是一个字符串 dumps loads dump load import pickle '''支持的数据类型:python中的所有数据类型''' # 序列化出来的结果看不懂,因为结果是一个二进制 # pickle序列化出的来的数据只能在python中使用 dumps loads dump load # js中如何序列化? JSON.stringify() # 序列化 JSON.parse() # 反序列化 **在形参和实参中的用法不一样 from django.http import JsonResponse def index(request): # print(123) # return HttpResponse('ok') # return redirect() # return render() user_dict = {'username':'ly很帅', 'password':123} l = [1, 2, 3] # json_str = json.dumps(l, ensure_ascii=False) # return HttpResponse(json_str) # return JsonResponse(user_dict, json_dumps_params={'ensure_ascii':False}) return JsonResponse(l,safe=False)

form表单上传文件

上传文件注意事项: 1. 必须是post请求 2. enctype='multipart/form-data' 后端: 在request.FILES中接收文件数据,其他数据一律按照请求方式接收 form表单可以传递的数据格式: 1. urlencoded 2. form-data # 不能提交json格式的数据 '''提交json格式的数据: 1. ajax 2. 第三方工具 postman apizza ''' 数据格式: 1. urlencoded 2. form-data 3. json格式 if request.method == 'POST': print(request.FILES) file_obj = request.FILES.get('myfile') print(file_obj.name) # 文件名 import random import uuid aa = str(uuid.uuid4()) + '.png' with open(aa, 'wb') as f: for line in file_obj: f.write(line) return render(request, 'upload_file.html')

CBV和FBV

FBV: function based view CBV: class based view class IndexView(View): def get(self, request): print('get') return HttpResponse('get') def post(self, request): print('post') return HttpResponse('POST') # url(r'^indexCbv/', views.IndexView.as_view()),

CBV的源码

如何通过请求方式确定的方法? #############入口################################ def view(request, *args, **kwargs): self = cls(**initkwargs) # self = IndexView(**initkwargs) # self => IndexView return self.dispatch(request, *args, **kwargs) ##############核心方法################################ def dispatch(self, request, *args, **kwargs): # GET POST => get post if request.method.lower() in self.http_method_names: # 反射:get set has del handler = getattr(self, request.method.lower(), self.http_method_not_allowed) else: handler = self.http_method_not_allowed return handler(request, *args, **kwargs) # get(request, *args, **kwargs)

模板语法

1. 传值 # 跟变量相关的都使用双括号 {{}} # 跟逻辑相关的都使用 {% %} '''模板文件中取值一律使用点语法 . ''' # 在模板文件里面的函数,不用加括号,会自动加括号调用, 不能传递参数

模板语法之过滤器

# 相当于python里面的内置方法 语法: {{变量|过滤器:参数}} 过滤器有很多个,大概有六七十,我们只需要掌握5个左右 1. length 2. defalut 3. date 4. filesizeformat 5. safe # 过滤器里面最大传两个参数,至少一个参数 xss攻击

__EOF__

本文作者祈安
本文链接https://www.cnblogs.com/jyc666/p/15956688.html
关于博主:没有收拾残局的能力,就别放纵善变的情绪
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   丶祈安  阅读(34)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
点击右上角即可分享
微信分享提示