views
#视图函数一定包含两个对象:
HttpRequest请求对象,是由django自动创建的
HttpResponse响应对象由自己创建。
一
#HttpRequset----request---->用户请求相关的所有
request.path #访问获取文件的路径
request.method #获取请求中使用的http方式(get/post)
request.body #含所有的请求信息 bytes类型
request.GET #GET请求的数据(类字典对象) 请求头中的url中?后面拿值
request.POST #POST请求的数据(类字典对象) 请求体里拿值
request.COOKIES #包含所有cookies的标准Python字典对象;keys和values都是字符串
request.session #唯一可读写的属性,代表当前会话的字典对象;
#自己有激活Django中的session支持时该属性才可用
request.FILES
'''
包含所有上传文件的类字典对象;
FILES中的每一个Key都是<input type="file" name="" />标签中name属性的值,
FILES中的每一个value同时也是一个标准的python字典对象,
包含下面三个Keys:
filename: 上传文件名,用字符串表示
content_type: 上传文件的Content Type
content: 上传文件的原始内容
'''
request.user
'''
是一个django.contrib.auth.models.User对象,代表当前登陆的用户。
如果访问用户当前没有登陆,user将被初始化为django.contrib.auth.models.AnonymousUser的实例。
可以通过user的is_authenticated()方法来辨别用户是否登陆:
只有激活Django中的AuthenticationMiddleware时该属性才可用
'''
request.GET.get('name') #拿到GET请求里的name的值
request.POST.getlist('key') #如果某个键对应有多个值,需要用getlist
request.get_full_path()
二
#HttpResponse---->响应字符串
from django.http import HttpResponse
#在HttpResponse对象上扩展的常用方法
#1.render函数
#render方法主要是将从服务器提取的数据,填充到模板中,然后将渲染后的html静态文件返回给浏览器。
render(request,template_name[, context])
'''
request: 用于生成响应的请求对象。
template_name:要使用的模板的完整名称,可选的参数
context:添加到模板上下文的一个字典。默认是一个空字典。如果字典中的某个值是可调用的,视图将在渲染模板之前调用它。
local()是Python中的一个内置函数,它可以将函数中的局部变量以字典的形式返回。
'''
from django.shortcuts import render
def test(request):
return render(request,'index.html')
#2.redirect函数
'''
参数可以是:
一个模型:将调用模型的get_absolute_url() 函数
一个视图,可以带有参数:将使用urlresolvers.reverse 来反向解析名称
一个绝对的或相对的URL,将原封不动的作为重定向的位置。
'''
from django.shortcuts import redirect
#传递一个对象
#将调用get_absolute_url() 方法来获取重定向的URL:
from myapp.models import MyModel
def my_view(request):
...
object = MyModel.objects.get(...)
return redirect(object)
#传递一个视图的名称
#可以带有位置参数和关键字参数;将使用reverse() 方法反向解析URL
def my_view(request):
...
return redirect('some-view-name', foo='bar')
#传递要重定向的一个硬编码的URL
def my_view(request):
...
return redirect('/some/url/', permanent=True)
#默认情况下,redirect() 返回一个临时重定向。
#以上所有的形式都接收一个permanent 参数;如果设置为True,将返回一个永久的重定向: