Django第二篇-----视图和 URL 配置

目录

helloword

 Django 处理请求的过程

URL 配置和松耦合

动态 URL

 hours_ahead 视图


helloword

新建Django项目在结构如下文件并添加代码

 views.py

from django.http import HttpResponse

def hello(request):
    return HttpResponse("Hello world")

 urls.py

from django.conf.urls import url
from django.contrib import admin
from mysite.views import hello

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^hello/$',hello),
]

 访问如下链接

 Django 处理请求的过程

1. 请求 /hello/ 。
2. Django 查看 ROOT_URLCONF 设置,找到根 URL 配置。
3. Django 比较 URL 配置中的各个 URL 模式,找到与 /hello/ 匹配的那个。
4. 如果找到匹配的模式,调用对应的视图函数。
5. 视图函数返回一个 HttpResponse 对象。

6. Django 把 HttpResponse 对象转换成正确的 HTTP 响应,得到网页。

URL 配置和松耦合

松耦合是一种软件开发方式,其价值在于让组件可以互换。如果两部分代码之间是松耦合的,那么改动其中一部分对另一部分的影响很小,甚至没有影响。Django 的 URL 配置就很好地运用了这个原则。在 Django Web 应用中,URL 定义与所调用的视图函数之间是松耦合的,即某个功能使用哪个 URL 与视图函数的实现本身放在两个地方。

在下述示例中, current_datetime 可以通过两个 URL 访问。我们是故意这么做的,但是其中涉及的知识能用得到。

urlpatterns = [
    url(r'^admin/', include(admin.site.urls)),
    url(r'^hello/$', hello),
    url(r'^time/$', current_datetime),
    url(r'^another-time-page/$', current_datetime),
]

动态 URL

urlpatterns = [
    # ...
    url(r'^time/plus/(\d+)/$', hours_ahead),
    # ...
]

 hours_ahead 视图

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)

猜你喜欢

转载自blog.csdn.net/Da___Vinci/article/details/84201117