Skip to main content
 首页 » 编程设计

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

2025年05月04日39yjmyzz

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/