【问题标题】:about Django ,"url() takes at least 2 arguments (1 given)"关于 Django ,“url() 至少需要 2 个参数(给定 1 个)”
【发布时间】:2015-01-31 13:02:22
【问题描述】:

这是我的观点.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.

在我看来,我不相信错误的原因是缺少“mysite.view.hours_ahead”

【问题讨论】:

    标签: python django


    【解决方案1】:

    错误在这一行:

    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'),
    

    【讨论】:

    • 感谢您的帮助:),但这是我的类型错误,更改无法执行任何操作。但我刚刚找到了解决方案~再次感谢您:)
    【解决方案2】:

    我找到了解决方案 这一行

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

    应该是

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

    参数传递和正则表达式似乎有些问题。

    【讨论】:

      猜你喜欢
      • 2016-05-28
      • 1970-01-01
      • 2011-12-25
      • 1970-01-01
      • 2013-08-15
      • 1970-01-01
      • 2017-12-29
      相关资源
      最近更新 更多