视图与url配置
- Django 中指定两个信息:
- 页面的内容由视图函数(view function)生成
- URL 在 URL 配置(URLconf)中指定
视图函数
-
项目目录中新建一个空文件,名为 views.py,编写视图函数
-
视图函数举例:
from django.http import HttpResponse
def hello(request):
return HttpResponse("Hello world")
视图函数的第一个参数是 HttpRequest 对象,按约定,名为 request ,返回值是一个HttpResponse 实例
url配置
创建项目时自动生成的urls.py文件中配置
urlpatterns 变量,它负责定义 URL 与处理URL 的代码之间的映射
- 导入视图函数
from mysite.views import hello
- urlpatterns 中添加映射
url(r'^hello/$', hello)
url() 在django.conf.urls中,第一个参数是模式匹配字符串(一个正则表达式),第二个参数是模式使用的视图函数
动态url
- 配置
通过正则表达式实现,动态参数部分用()扩起来
例子:url(r'^time/plus/(d{1,2})/$', hours_ahead)
(d{1,2})是动态参数 - 视图函数
def hours_ahead(request, offset):
定义是第二个参数就是圆括号捕获的字符串
例子:
from django.http import Http404, HttpResponse
import datetime
def hours_ahead(request, offset):
try:
offset = int(offset)
except ValueError:
raise Http404()
dt = datetime.datetime.now() + datetime.timedelta(hours=offset)
html = "In %s hour(s), it will be %s." % (offset, dt)
return HttpResponse(html)
其他注意
- 创建 Django 项目后,它就处于调试模式,上线时需解除调试模式
- 根目录为r'^$'
- 处理请求过程
- 请求 /hello/ 。
- Django 查看 ROOT_URLCONF 设置,找到根 URL 配置。
- Django 比较 URL 配置中的各个 URL 模式,找到与 /hello/ 匹配的那个。
- 如果找到匹配的模式,调用对应的视图函数。
- 视图函数返回一个 HttpResponse 对象。
- Django 把 HttpResponse 对象转换成正确的 HTTP 响应,得到网页。