from django.shortcuts import render, HttpResponse, HttpResponseRedirect, redirect
import datetime
def current_datetime(request):
now = datetime.datetime.now()
html = "<html><body>It is now %s.</body></html>" % now
return HttpResponse(html)
django.shortcuts
模块导入了HttpResponse
类,以及Python的datetime
库。current_datetime
函数。它就是视图函数。每个视图函数都使用HttpRequest
对象作为第一个参数,并且通常称之为request
。但是视图函数的名称并不重要;不需要用一个统一的命名方式来命名,以便让Django识别它。我们将其命名为current_datetime
,是因为这个名称能够精确地反映出它的功能。HttpResponse
对象,其中包含生成的响应。每个视图函数都负责返回一个HttpResponse
对象。请求对象(HttpRequest)
与响应对象(HttpResponse)
。1.请求方式:request.methon
:一般情况下,在浏览器的地址栏直接访问时是GET,用form的submit提交的方式是POST。2.请求数据:request.GET与request.POST
:这两个方式哪一个有值,完全取决于请求的方式。这里需要注意的是得到的结果是一个“字典”。对于Get请求方式,如果浏览器的地址栏输入的是:http://127.0.0.1:8000/app01/index/?name=whw&age=22
,那request.GET
得到的结果是{‘name‘:‘whw‘,‘age‘:‘22‘}
。而对于POST请求方式,字典的key值是表单中input的name属性的值,而对应的value是input中用户输入的值。3.请求路径:request.path
:请求路径的组成是:协议://IP:port/路径?参数(GET请求数据)
。比如说有一个GET请求http://127.0.0.1:8000/app01/index/?name=whw&age=22
,那这个请求答应出来的路径就是/app01/index/
。大家不要被后面的迷惑了,因为index后面是"?",我们可以把它看作是路径与参数的分隔符,所以我们打印路径的时候是不会打印"?"后面的参数的!1.get_full_path()方法
:关于这个方法我们需要注意一点就可以了,还拿上面的“请求数据”中的例子来讲,如果GET请求方式输入:http://127.0.0.1:8000/app01/index/?name=whw&age=22
。path属性得出的只是/app01/index/
而get_full_path()方法
得出的是:/app01/index/?name=whw&age=22
2.is_ajax()方法
——判断请求是不是ajax方法。HttpResponse()
、render()
、redirect()
。另外需要注意的一点是,调用者三个方法前需要先在views.py
文件中引入:from django.shortcuts import render,HttpResponse,HttpResponseRedirect,redirect
HttpResponse()
,它比较简单,因为我们在括号内直接加一个字符串作为响应体就可以了。我们可以拿上面的“返回当前日期和时间作为HTML文档”的例子作为参考。render(request, template_name[, context])
。合一个给定的模板和一个给定的上下文字典,并返回一个渲染后的HttpResponse对象。render()
的参数介绍:(1)request
:用于生成响应的请求对象。(2)template_name
:要使用的模板的完整名称,可选的参数(3)context
:添加到模板上下文的一个字典。默认是一个空字典。如果字典中的某个值是可调用的,视图将在渲染模板之前调用它。def index(request):
import datetime
n = datetime.datetime.now()
now = n.strftime(‘%Y-%m-%d:%X‘)
return render(request,‘index.html‘,{‘ctime‘:now})
index.html
中的内容为:<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h4>当前时间:{{ ctime }}</h4>
</body>
</html>
{‘datetime‘:now}
中datetime键对应的value值now作为参数传给浏览器,传完参数之后index.html才是一个html文件了,然后render再将html文件那一堆东西传给浏览器,所以浏览最后显示的是now的值。这个“替换”的过程十分重要,请大家务必理解并掌握!def my_view(request):
...
return redirect(‘/some/url/‘)
def my_view(request):
...
return redirect(‘http://example.com/‘)
301
与302
的区别说明如下:原文:https://www.cnblogs.com/anthony-wang0228/p/10895132.html