Форма Django «принимает ровно 1 аргумент (2 дано)» ошибка - возможно, связана с CSRF? - PullRequest
0 голосов
/ 17 апреля 2011

Я пытаюсь создать довольно простую форму в Django 1.3 и пытаюсь понять, как работает CSRF.

Я думаю, что выполнил три шага , описанных на сайте Django ,но я все еще не могу заставить форму работать.

Форма отображается при загрузке URL, однако после нажатия кнопки отправки я получаю следующую ошибку:

Ошибка TypeError в / txt / txt () принимает ровно 1 аргумент (2 дано)

Вот фактический код:

views.py:

from django.http import HttpResponse
from django.shortcuts import render_to_response, redirect
from django.template import RequestContext

def txt(request):
    if request.method == 'POST':
        msg="txt received"
    else:
        msg="nothing in POST"
    return render_to_response('base.html', locals(), context_instance=RequestContext(request))

HTML:

<body>

    <form action="txt/" method="POST">{% csrf_token %}
        From <input type="text" name="From"><br>
        To <input type="text" name="To"><br>
        Body <input type="text" name="Body"><br>
        <input type="submit" value="Search">
    </form>

    {{ msg }}

</body>

Я знаюЯ не создавал формы и т. Д., Но я просто пытался получить базовую функциональность.Я думаю, что этот код работал бы в предыдущих версиях Django, и я не уверен, почему он не работает на этот раз.

1 Ответ

3 голосов
/ 17 апреля 2011

Ошибка выглядит так, как будто ваша функция просмотра получает больше аргументов, чем она готова принять.Как показано выше, представление принимает только один аргумент: запрос.

Если шаблон URL для этого представления настроен с группой захвата или вы добавляете дополнительные аргументы через необязательный словарь или параметр kwargs для url () , тогда эти дополнительные аргументы будут переданы функции просмотра и могут вызвать ошибку, которую вы видите.

...