python - django项目的urls.py和views.py之间的联系

标签 python django django-urls

View .py

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 = "<html><body>In %s hour(s), it will be %s.</body></html>" % (offset, dt)        
    return HttpResponse(html)

网址.py

from django.conf.urls.defaults import *
from mysite.views import hello, current_datetime, hours_ahead

urlpatterns = patterns('',
    (r'^hello/$', hello),
    (r'^time/$', current_datetime), 
    (r'^time/plus/(\d{1,2})/$', hours_ahead),
)

它表示从匹配的 url 中提取值的参数偏移量与其名称无关,但位置很重要。这是它的第二个参数,位于 request 之后,决定它可以做什么。 但为什么 ? hours_ahead ,只是一个用户定义的方法,而不是一个类或其他东西。谁赋予它的权力使参数的位置可以那样工作。 所以说清楚,我的问题是,“offset = int (offset)”是否有意义,为什么当用户设置小时数时 offset 可以从 url 接收值。

最佳答案

它的工作方式是 Django 读取这个 url 模式 r'^time/plus/(\d{1,2})/$',提取括号中的参数 (在本例中为 (\d{1,2})),然后将其作为参数传递给 hours_ahead 函数。如果有很多参数,它们在 url 模式中的写入顺序也决定了它们被传递到相应 View 函数的顺序。您可以在此处进一步阅读文档:https://docs.djangoproject.com/en/dev/topics/http/urls/

关于python - django项目的urls.py和views.py之间的联系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23591580/

相关文章:

python - 如何在 django 中编写 urlpatterns?

django-urls - 在通用 View 中将捕获的命名正则表达式传递给 URL 字典

python - 无法使用 Django 和 Python 在 URL 查询字符串中传递值

python - 如何处理使用双绞线的R/W的多个串口?

Django:urls.py 中的美元符号

PostgreSQL 的 Django 模型继承错误

django - 验证 Django 管理内联表单集

python - Django 'resolve' : get the url name instead of the view_function

python - FieldStorage 输入删除了一些字符

python - 创建一个列表项作为键和索引作为值的字典?