【问题标题】:Django get() takes exactly 2 arguments (3 given)Django get() 只需要 2 个参数(给定 3 个)
【发布时间】:2011-08-12 16:52:39
【问题描述】:

我正在尝试在我的测试应用程序中使用 DetailView 泛型类,这就是我的观点

*更新模型 * 来自 example

class AuthorDetailView(DetailView):

     context_object_name = "author"
     queryset = Author.objects.all()
     slug_field = "id"


    def get_object(self):
        object = super(AuthorDetailView, self).get_object()

        return object

作为测试

在我的 urls.py 文件中,我得到了

('^author/(\d+)/$', Author.AuthorDetailView.as_view()),

当我导航到 http://localhost:8000/author/1 时,我收到以下错误

打字错误 get() 正好接受 2 个参数(3 个给定)

Traceback:
File "/Library/Python/2.6/site-packages/django/core/handlers/base.py" in get_response
  111.                         response = callback(request, *callback_args, **callback_kwargs)
File "/Library/Python/2.6/site-packages/django/views/generic/base.py" in view
  47.             return self.dispatch(request, *args, **kwargs)
File "/Library/Python/2.6/site-packages/django/views/generic/base.py" in dispatch
  68.         return handler(request, *args, **kwargs)

Exception Type: TypeError at /author/1/
Exception Value: get() takes exactly 2 arguments (3 given)

我不太明白 base.py 中发生了什么。

【问题讨论】:

    标签: django django-views django-1.3


    【解决方案1】:

    试试这个 urlconf

    from books.views import AuthorDetailView
    
    urlpatterns = patterns('',
        #...
        (r'^authors/(?P<pk>\d+)/$', AuthorDetailView.as_view()),
    )
    

    并导航到:

    http://localhost:8000/author/1/
    

    【讨论】:

    • 不错的发现。 “如果找到 pk,此方法使用该值执行基于主键的查找。如果没有找到 pk 参数,它会查找 slug 参数,并使用 SingleObjectMixin.slug_field 执行 slug 查找。”
    • 感谢各位的帮助。如果我从 url 中删除 pk 查找并将值“id”添加到 slug_field,那么我会再次收到相同的错误。我做错了吗?
    • 您需要将slug_field 设置为“id”并接受一个名为“slug”的参数。 (?P...)
    【解决方案2】:

    我进行了以下更改,并且成功了。

    将调试工具栏升级到 1.5 或将 sqlparse 降级到 0.1.x。

    来源:https://github.com/jazzband/django-debug-toolbar/issues/862(非常感谢来自 github 的用户 aaugustin)

    【讨论】:

      猜你喜欢
      • 2016-03-25
      • 2015-02-18
      • 2017-07-19
      • 2014-09-04
      • 1970-01-01
      • 1970-01-01
      • 2018-02-06
      • 2016-07-22
      • 1970-01-01
      相关资源
      最近更新 更多