首页 > 其他 > 详细

六 .Django 视图views(二)

时间:2019-08-14 09:22:46      阅读:72      评论:0      收藏:0      [点我收藏+]

一 . 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)

技术分享图片

 

六 .Django 视图views(二)

原文:https://www.cnblogs.com/lovershowtime/p/11349551.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!