TypeError: get () принимает 2 позиционных аргумента, но было дано 3

Я пытаюсь получить ввод, чтобы появиться на моей странице, и слежу за пошаговым руководством Макса Гудриджа, эпизод 45, но, похоже, застрял в этом конкретном разделе. Если бы кто-нибудь мог помочь, это было бы огромной помощью.

Мой urls.py:

 url(r'^bandlist/$', polls_views.bandlist, name='bandlist'),
 url(r'^bandlist/(\d+)/$', polls_views.BandView.as_view(), name='bandview'),

Мой views.py

def bandlist(request):
    query = Band.objects.order_by('bandname')
    args =  {'query': query}
    return render(request, 'bandlist.html', args)

class BandView(TemplateView):
    template_name = 'bandview.html'

    def get(self, request):
        form = BandForm()
        return render(request, self.template_name, {'form': form})

Мои формы.py

class BandForm(forms.Form):
    post = forms.CharField()  

И шаблон (band.html)

{% extends 'bbase.html' %}


{% block content %}
<h1>{{ band.bandname }}</h1>

<h5>Total Ratings: {{ band.totalrating }}</h5>
<h5>How many times have {{band.bandname}} been rated: {{ band.totalrated }}</h5>
<h5>Average rating (Out of 5): </h5>

<form method = "post">
    {{ form.as_p }}
    <input type = "submit" value = "Score" />
</form>
{% endblock %}

После этого я попытаюсь внедрить систему оценки и обзора для каждой группы. Если бы кто-нибудь мог дать совет и по этому поводу, я был бы очень признателен.

Обновлено: Вот полная трассировка:

Internal Server Error: /bandlist/1/
Traceback (most recent call last):
  File "C:\Users\Ethan\Envs\OnNote\lib\site-packages\django\core\handlers\exception.py", line 41, in inner
    response = get_response(request)
  File "C:\Users\Ethan\Envs\OnNote\lib\site-packages\django\core\handlers\base.py", line 187, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "C:\Users\Ethan\Envs\OnNote\lib\site-packages\django\core\handlers\base.py", line 185, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "C:\Users\Ethan\Envs\OnNote\lib\site-packages\django\views\generic\base.py", line 68, in view
    return self.dispatch(request, *args, **kwargs)
  File "C:\Users\Ethan\Envs\OnNote\lib\site-packages\django\views\generic\base.py", line 88, in dispatch
    return handler(request, *args, **kwargs)
TypeError: get() takes 2 positional arguments but 3 were given

Очевидно, что as_view() получил больше аргументов, чем ожидалось. Если вы звоните в detail, но случайно перенаправляетесь на list. Такое исключение будет возбуждено.

joe 14.04.2018 10:16

Не могли бы вы опубликовать полученную трассировку?

Will Keeling 14.04.2018 10:26

Уилл, я только что обновился

Ethan Pearce 14.04.2018 10:32
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
3
5 235
1

Ответы 1

В вашей реализации метода get() отсутствует аргумент.

Первая проверка с классом предка TemplateView
https://docs.djangoproject.com/en/2.0/ref/class-based-views/base/#django.views.generic.base.TemplateView

Увеличьте масштаб, чтобы увидеть точную реализацию метода get()https://docs.djangoproject.com/en/2.0/ref/class-based-views/base/#django.views.generic.base.View

  def get(self, request, *args, **kwargs):
        return HttpResponse('Hello, World!')

Так что мне нужно изменить?

Ethan Pearce 14.04.2018 10:52

Ваш метод get().

joe 14.04.2018 11:01

Можете ли вы немного расширить, я не очень понимаю

Ethan Pearce 14.04.2018 12:54

@EthanPearce Нет проблем. Добавьте *args and **kwargs в свой метод get()

joe 14.04.2018 12:56

Другие вопросы по теме