六 .Django 视图views(二)
时间:2019-08-14
本文章向大家介绍六 .Django 视图views(二),主要包括六 .Django 视图views(二)使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
一 . Django 视图 views.py
1. http响应:HttpResponse对象
对于HttpRequest对象来说,是由django自动创建的,但是,HttpResponse对象就必须我们自己创建。每个view请求处理方法必须返回一个HttpResponse对象。
# resposon对象 def showres(request): res=HttpResponse() print(res.content) # 表示返回的内容 print(res.charset) # charset 编码格式 print(res.status_code) # 状态 200 304 404 print(res.content-type) # 指定输出MIME类型 return HttpResponse("response啊啦啦啦啦啊啦啦啦啦啦啦")
服务器执行
b''
utf-8
200
b''
设置或删除响应头信息
response = HttpResponse() response['Content-Type'] = 'text/html; charset=UTF-8' del response['Content-Type']
2. render()和 render_to_response()渲染
页面渲染: render()(推荐)
render_to_response(),
def my_view(request): # 视图的代码写在这里 return render(request, 'myapp/index.html', {'foo': 'bar'})
上面的代码等于:
from django.http import HttpResponse from django.template import loader def my_view(request): # 视图代码写在这里 t = loader.get_template('myapp/index.html') c = {'foo': 'bar'} return HttpResponse(t.render(c, request))
def test(request):
return render_to_response("html_app/01.html")
locals(): 可以直接将函数中所有的变量传给模板
def login(request): bb="张三!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" return render(request,"html_app/04login.html",{"name":bb}) # return render(request,"html_app/04login.html",locals())
return render(request, 'template.html', locals()|{'key1':value1,'key2':value2,}) # 通过render向模板中传值 1.locals() 2.字典 {'key1':value1,'key2':value2,...}
3. redirect() 重定向
redirect()跳转时,会更改浏览器的url地址
参数可以是:
一个模型:将调用模型的get_absolute_url() 函数
一个视图,可以带有参数:将使用urlresolvers.reverse 来反向解析名称
一个绝对的或相对的URL,将原封不动的作为重定向的位置。
默认返回一个临时的重定向;传递permanent=True 可以返回一个永久的重定向。
传递一个对象(ORM相关)
from django.shortcuts import redirect def my_view(request): ... object = MyModel.objects.get(...) return redirect(object)
传递一个视图的名称
def my_view(request): ... return redirect('some-view-name', foo='bar')
传递要重定向到的一个具体的网址 def my_view(request): ... return redirect('/some/url/')
return redirect('http://example.com/')
默认情况下,redirect() 返回一个临时重定向。以上所有的形式都接收一个permanent 参数;如果设置为True,将返回一个永久的重定向: def my_view(request): ... object = MyModel.objects.get(...) return redirect(object, permanent=True) 永久重定向 爬虫相关的
扩展阅读: 临时重定向(响应状态码:302)和永久重定向(响应状态码:301)对普通用户来说是没什么区别的,它主要面向的是搜索引擎的机器人。 A页面临时重定向到B页面,那搜索引擎收录的就是A页面。 A页面永久重定向到B页面,那搜索引擎收录的就是B页面。
4. JsonResponse对象
用 json 模块和 HttpResponse 返回生成的 json
views from django.shortcuts import render, HttpResponse import json # json 测试 def json_test(request): data = {"name": "Jack", "age": 18} hobby = ["Music", "Movie", "Basketball", "Reading"] json_data = json.dumps(data) # 把 data 序列化成 json 格式的字符串 # json_data = json.dumps(hobby) # 该方法也可以直接序列化列表 return HttpResponse(json_data)
JsonResponse 是 HttpResponse 的子类,用来生成 json 编码的响应
views
from django.shortcuts import render, HttpResponse # json 测试 def json_test(request): data = {"name": "Jack", "age": 18} hobby = ["Music", "Movie", "Basketball", "Reading"] # 这里需要导入 HttpResponse from django.http import HttpResponse, JsonResponse return JsonResponse(data)
需要加个 safe=False
from django.shortcuts import render, HttpResponse # json 测试 def json_test(request): data = {"name": "Jack", "age": 18} hobby = ["Music", "Movie", "Basketball", "Reading"] from django.http import HttpResponse, JsonResponse return JsonResponse(hobby, safe=False)
原文地址:https://www.cnblogs.com/lovershowtime/p/11349551.html
- 接口测试 | 25 requests + pytest测试实例
- 接口测试 | 24 requests + unittest集成你的接口测试
- 接口测试 23 requests基础入门二
- 写让别人能读懂的代码+网页性能管理详解
- CDOJ 1330 柱爷与远古法阵【高斯消元,卡精度】
- Robot Framework | 04 参数化基于Public API的RFS测试
- 接口测试 | 22 requests基础入门
- 分享一个Mvc的多层架构,欢迎大家拍砖斧正
- Robot Framework | 03 基于Public API创建你RFS测试
- Robot Framework | 02 从抛弃RIDE开始创建你的RFS测试
- ASP.NET5 Beta8可用性
- Docker Swarm集群初探
- 数据库逻辑设计
- 06.移动先行之谁主沉浮----我的代码我来写(Xaml的优势)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法