第56天:django学习(五)

HttpResponse对象

响应对象主要有三种形式:

HttpResponse()、render()、redirect()

HttpResponse()括号内直接跟一个具体的字符串作为响应体,比较直接很简单,所以这里主要介绍后面两种形式。

render()

render(request, template_name[, context])` `结合一个给定的模板和一个给定的上下文字典,并返回一个渲染后的 HttpResponse 对象。

参数:

request: 用于生成响应的请求对象。

template_name:要使用的模板的完整名称,可选的参数

context:添加到模板上下文的一个字典。默认是一个空字典。如果字典中的某个值是可调用的,视图将在渲染模板之前调用它。

render方法就是将一个模板页面中的模板语法进行渲染,最终渲染成一个html页面作为响应体。

python 复制代码
def render(request, template_name, context=None, content_type=None, status=None, using=None):
    content = loader.render_to_string(template_name, context, request, using=using)
    return HttpResponse(content, content_type, status)

redirect()

python 复制代码
def my_view(request):
    ...
    return redirect('/some/url/')

也可以是一个完整的URL

python 复制代码
def my_view(request):
    ...
    return redirect('/some/url/')

JsonResponse类

json作用:

跨语言传输-------序列化:json.dumps--------反序列化:json.loads

向前端返回一个json格式字符串的两种方式

方式一:

python 复制代码
import json
data = {'name': 'kevin', 'age': 22}
def index(request):
	return HttpResponse(json.dumps(data))

方式二:

python 复制代码
from django.http import JsonResponse

def index(request):	
    user_dic = {'name': 'kevin', 'age': 22}
    return JsonResponse(user_dict, json_dumps_params={'ensure_ascii': False})

CBV和FBV

CBV和FBV:

FBV: function based view # 写的都是函数

CBV: class based view # 写的都是类

视图函数的写法(CBV)

python 复制代码
class MyLogin(View):
    def get(self, request):
        print('get。。。')
        return HttpResponse("get")

    def post(self, request):
        return HttpResponse("hello postman!!!")

路由文件的写法(CBV):

python 复制代码
url(r'^login/', views.MyLogin.as_view()), # 注意:as_view后要加括号

简单文件上传

表单上传数据需要满足的条件

1.请求方式必须是post

2.enctype="multipart/form-data"

模板中的写法

html 复制代码
<form action="" method="post" enctype="multipart/form-data">
    <input type="file" name="myfile">
    <input type="submit">
</form>

视图函数写法

python 复制代码
def index(request):
    user_dict = {'name': 'kevin', 'age': 22}
    file_obj = request.FILES.get('myfile')
    file_name = file_obj.name
    with open(file_name, 'wb') as f:
        for line in file_obj:
            f.write(line)

    return render(request, 'index.html')
相关推荐
潮汐退涨月冷风霜16 分钟前
数字图像处理(1)OpenCV C++ & Opencv Python显示图像和视频
c++·python·opencv
Hello_Embed6 小时前
STM32HAL 快速入门(二十):UART 中断改进 —— 环形缓冲区解决数据丢失
笔记·stm32·单片机·学习·嵌入式软件
咸甜适中6 小时前
rust语言 (1.88) 学习笔记:客户端和服务器端同在一个项目中
笔记·学习·rust
酷飞飞7 小时前
Python网络与多任务编程:TCP/UDP实战指南
网络·python·tcp/ip
Magnetic_h7 小时前
【iOS】设计模式复习
笔记·学习·ios·设计模式·objective-c·cocoa
研梦非凡8 小时前
ICCV 2025|从粗到细:用于高效3D高斯溅射的可学习离散小波变换
人工智能·深度学习·学习·3d
数字化顾问8 小时前
Python:OpenCV 教程——从传统视觉到深度学习:YOLOv8 与 OpenCV DNN 模块协同实现工业缺陷检测
python
学生信的大叔9 小时前
【Python自动化】Ubuntu24.04配置Selenium并测试
python·selenium·自动化
limengshi1383929 小时前
机器学习面试:请介绍几种常用的学习率衰减方式
人工智能·学习·机器学习
知识分享小能手9 小时前
React学习教程,从入门到精通,React 组件核心语法知识点详解(类组件体系)(19)
前端·javascript·vue.js·学习·react.js·react·anti-design-vue