Django视图层

视图层(views)

主要用来写业务逻辑
三板斧的使用

HttpResponse:返回一个字符串
render:渲染模板(html)
参数:request,模板.htmllocals()
redirect:重定向的
重定向:会有两次请求,第一返回一个响应头localtion:/index/
(/index/ 是redirect里面写的相对路径) code:301 浏览器读取到301或者302,就会发起新的请求,第二次返回一个index.html
第一次发送的是一个指令,第二次请求某个地址
##一个请求就是一个request对象

image

JsonResponse序列化类的使用
源码
image

这个类背后还是调用了json模块的dumps
json有什么用?
	跨语言传输
在Django中,我们使用JsonResponse()
如果需要传输中文,加上参数json_dumps_params={'ensure_ascii':False}
如果想把别的数据类型返回给页面,加上safe=False参数,可以返回其他数据类型,比如:listint
def index(request):
    # userinfo = {'username': 'tank你好', 'password': '123'}
    user_list=[1,2,3,45]
    user_int=1
    user_float=1.1
    user_tuple=(1,)

    return JsonResponse([user_list,user_int,user_float,user_tuple], safe=False)

form 表单上传文件

需要满足条件:
1.请求方式必须是post
2.envtype="multipart/form-data"
file.html
<form action="" method="post" enctype="multipart/form-data" >
    <input type="file" name="img/png"><br>
    <input type="submit" value="提交">
	
def index(request):
    res = request.FILES.get('img/png')
    if res is not None:
        random_str = str(uuid.uuid4())+('.')
        file_name = random_str+res.name.split(".")[-1]
        print(file_name)
        with open(file_name,'wb') as f:
            for i in res:
                f.write(i)
    print(request.body)
    print(request.path)
    print(request.path_info)
    print(request.get_full_path())
    return render(request, 'file.html')

FILES:接收文件对象
body:接收二进制
path:接收第一个路径
path_info:接收一个路径
get_full_path():如果通过get传参,那么可以直接获取get传参的路径包括参数

CBV(class base view)的写法

使用类的方式定义method
class Person(View):
    def get(self, request):
        print('get..')
        return HttpResponse('get')

    def post(self, request):
        print('post..')
        return  HttpResponse('index.html')
posted @   家购诗  阅读(4)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
点击右上角即可分享
微信分享提示