Django中的动态URL

时间:2013-06-25 16:07:06

标签: python django url

我正在创建一个视图,显示当前日期和时间偏移一定的小时数。目标是为页面/时间/加/ 1设计一个站点/以一小时显示日期和时间,页面/时间/加/ 2 /显示两小时内的日期和时间,页面/时间/加/ 3 /以三小时显示日期和时间,依此类推。这是我在views.py中的功能:

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)

这是我的url.py文件的内容:

from django.conf.urls import patterns, include, url
from aplicacion1.views import hours_ahead

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

views.py中的模式应该只接受一个或两个数字的数字Django应该显示错误“找不到页面”否则。 URL http://127.0.0.1:8000/time/plus/(no hours)也应该抛出404错误。但是,当我运行服务器并尝试访问http://127.0.0.1:8000/time/plus/24/之类的网址时,请告诉我以下错误:

Page not found (404)
Request Method: GET
Request URL:    

http://127.0.0.1:8000/time/plus/24/
Using the URLconf defined in cibernat.urls, Django tried these URL patterns, in this order:
^$
^time/$
^time/plus\d+/$
^admin/doc/
^admin/
The current URL, time/plus/24/, didn't match any of these.

我犯的错误是什么?我看到正则表达式看起来正确

1 个答案:

答案 0 :(得分:3)

您的网址格式应为

url(r'^time/plus/(\d{1,2})/$', hours_ahead),

您忘记了\之前的d