#django #django-views #django-1.3
#django #django-просмотры #django-1.3
Вопрос:
Я пытаюсь использовать универсальный класс DetailView в моем тестовом приложении, и это то, что у меня есть на мой взгляд
* обновленная модель * из этого примера
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.
Ответ №1:
Попробуйте этот urlconf
from books.views import AuthorDetailView
urlpatterns = patterns('',
#...
(r'^authors/(?P<pk>d )/$', AuthorDetailView.as_view()),
)
и перейдите к:
http://localhost:8000/author/1/
Комментарии:
1. Хорошая находка. «если pk найден, этот метод выполняет поиск на основе первичного ключа, используя это значение. Если аргумент pk не найден, он ищет аргумент slug и выполняет поиск slug с использованием SingleObjectMixin.slug_field.»
2. Спасибо за помощь, ребята. Если я удалю поиск pk из URL и добавлю значение «id» в slug_field, я снова получу ту же ошибку. Я делаю это неправильно?
3. Вам нужно было бы установить
slug_field
значение «id» и принять аргумент с именем «slug». (?P<slug>…)
Ответ №2:
Я внес нижеприведенное изменение, и оно сработало.
Обновите панель инструментов отладки до 1.5 или понизьте sqlparse до 0.1.x.
Источник : https://github.com/jazzband/django-debug-toolbar/issues/862 (Большое спасибо пользователю aaugustin с github)