0

我正在创建一个视图,显示当前日期和时间偏移一定小时数。目标是设计一个站点,页面 /time/plus/1/ 以一小时显示日期和时间,页面 /time/plus/2/ 以两小时显示日期和时间,页面 /time/ plus /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 应该显示错误“找不到页面”。该 URLhttp://127.0.0.1:8000/time/plus/(no hours)还应该引发 404 错误。但是当我运行服务器并尝试访问类似的 URLhttp://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.

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

4

1 回答 1

3

您的 URL 模式应该是

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

你忘记了\以前d

于 2013-06-25T16:12:33.657 回答