关于Django," url()需要至少2个参数(1个给定)"

时间:2015-01-31 13:02:23

标签: python django

这是我的views.py

    def hours_ahead(request, offset):
        try:
            offset = int(offset)
        except ValueError:
            raise Http404()
        dt = datetime.datetime.now() + datetime.timedelta(hours=offset)
        assert False
        html = "<html><body>In %s hour(s), it will be %s.</body></html>" % (offset, dt)
        return HttpResponse(html)

这是我的urls.py

    from mysite.views import current_datetime,hours_ahead   
    urlpatterns = patterns('',
     # Examples:
        url(r'^$', 'mysite.views.home', name='home'),
        url(r'^blog/', include("blog.urls", namespace="blog")),
        url(r'^current_datetime/$', current_datetime),     
        url(url(r'^time/plus/\d+/$', 'mysite.view.hours_ahead', name='hours_ahead')),
        url(r'^admin/', include(admin.site.urls)),
)

错误是

    TypeError at /
    url() takes at least 2 arguments (2 given)

我在此页面中发现了同样的问题Django 1.7: some_name() takes exactly 2 arguments (1 given) 如果我改变我的代码就像那个建议 错误消息转到此:

    ViewDoesNotExist at /
    Could not import mysite.views.home. View does not exist in module mysite.views.

在我看来,我不相信错误的原因是缺乏的&#34; mysite.view.hours_ahead&#34;

2 个答案:

答案 0 :(得分:2)

错误在这一行:

url(url(r'^time/plus/\d+/$', 'mysite.view.hours_ahead', name='hours_ahead')),

应该是:

url(r'^time/plus/(\d+)/$', 'mysite.views.hours_ahead', name='hours_ahead'),

答案 1 :(得分:0)

我找到了解决方案 这一行

     url(r'^time/plus/\d+/$', 'mysite.view.hours_ahead', name='hours_ahead'),

应该是

    url(r'^time/plus/(?P<offset>\d{1,2})/$', hours_ahead)

这似乎是关于参数传递和Regex的一些问题。