django-2.视图与url配置

视图与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'^$'
  • 处理请求过程
    1. 请求 /hello/ 。
    2. Django 查看 ROOT_URLCONF 设置,找到根 URL 配置。
    3. Django 比较 URL 配置中的各个 URL 模式,找到与 /hello/ 匹配的那个。
    4. 如果找到匹配的模式,调用对应的视图函数。
    5. 视图函数返回一个 HttpResponse 对象。
    6. Django 把 HttpResponse 对象转换成正确的 HTTP 响应,得到网页。
posted @ 2018-07-17 10:39  WY~记录  阅读(120)  评论(0编辑  收藏  举报