Проблема с данными Django POST в Firefox и IE9, но не в Chrome - PullRequest
1 голос
/ 21 июня 2011

Я создаю веб-сайт с помощью Django и получаю следующую ошибку при попытке отправить данные POST из формы (вход имеет имя «bsubmit») в Firefox и IE9:

"Ключ" bsubmit "не найден в" <'QueryDict: {u'bsubmit.y': [u'63 '], u'bsubmit.x': [u'81 '], u'csrfmiddlewaretoken': [u'bunchofnumbers']}> "

Это прекрасно работает в Chrome, поэтому я не совсем уверен, что это может быть. Вот как я обрабатываю это в представлении:

def my_view(request):
    if request.method == 'POST':
        bsubmit = request.POST['bsubmit']
        return render_to_response('my_template.html', {'bsubmit': bsubmit},
                                  context_instance=RequestContext(request))
    else:
        bsubmit = 'some_val'
        return render_to_response('my_template.html', {'bsubmit': bsubmit},
                                  context_instance=RequestContext(request))

Я чувствую, что должно быть что-то очевидное, что мне не хватает, но я уверен, что это может быть.

РЕДАКТИРОВАТЬ: Вот шаблон ...

<form action="/home/" method="post"> 
{% csrf_token %}
<input type="image" src="submit.jpg" id="value1" name="bsubmit" value="value1"/>
</form>

У меня изначально было несколько отправок, но проблема сохраняется, когда я использую только одну.

1 Ответ

1 голос
/ 22 июня 2011

Делаете ли вы что-нибудь с помощью кнопки отправки с JavaScript? Включение в запрос bsubmit.x и bsubmit.y само по себе очень любопытно.

Кроме того, для чего вы на самом деле используете bsubmit?

В общем, вы все равно не должны обращаться к переменным записей напрямую. Используйте это вместо:

bsubmit = request.POST.get('bsubmit') # defaults to `None`

- ИЛИ -

bsubmit = request.POST.get('bsubmit', 'default')

Это поможет вам обойти ошибку, поэтому вам просто нужно соответствующим образом восстановиться в вашем шаблоне.

...