第56天:django学习(五)

HttpResponse对象

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

HttpResponse()、render()、redirect()

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

render()

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


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

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

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

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

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()

def my_view(request):
    ...
    return redirect('/some/url/')

        也可以是一个完整的URL

def my_view(request):
    ...
    return redirect('/some/url/')

JsonResponse类

        json作用:

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

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

        方式一:

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

        方式二:

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)

class MyLogin(View):
    def get(self, request):
        print('get。。。')
        return HttpResponse("get")

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

        路由文件的写法(CBV):

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

  简单文件上传

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

        1.请求方式必须是post

        2.enctype="multipart/form-data"

        模板中的写法

<form action="" method="post" enctype="multipart/form-data">
    <input type="file" name="myfile">
    <input type="submit">
</form>

        视图函数写法

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')

 

 

相关推荐

  1. 56django学习

    2023-12-09 00:10:02       56 阅读
  2. 58django学习(七)

    2023-12-09 00:10:02       50 阅读
  3. 57django学习(六)

    2023-12-09 00:10:02       48 阅读
  4. 59django学习(八)

    2023-12-09 00:10:02       51 阅读
  5. 55django学习(四)

    2023-12-09 00:10:02       61 阅读
  6. 回顾Django

    2023-12-09 00:10:02       52 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-09 00:10:02       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-09 00:10:02       106 阅读
  3. 在Django里面运行非项目文件

    2023-12-09 00:10:02       87 阅读
  4. Python语言-面向对象

    2023-12-09 00:10:02       96 阅读

热门阅读

  1. using meta-SQL 使用元SQL 六

    2023-12-09 00:10:02       44 阅读
  2. 鸿蒙(HarmonyOS)应用开发——管理组件状态

    2023-12-09 00:10:02       61 阅读
  3. TensorRT-LLM保姆级教程(一)-快速入门

    2023-12-09 00:10:02       64 阅读
  4. 计算机网络之网络层

    2023-12-09 00:10:02       65 阅读
  5. Halcon Dict相关算子(一)

    2023-12-09 00:10:02       57 阅读
  6. 12月07日,每日信息差

    2023-12-09 00:10:02       52 阅读
  7. mongdb配置ssl

    2023-12-09 00:10:02       62 阅读
  8. Android之 知识总结第二篇

    2023-12-09 00:10:02       59 阅读