токен csrf - PullRequest
       2

токен csrf

1 голос
/ 26 января 2012

Привет и заранее спасибо.Это дополнительный вопрос из следующей ветки (не уверен, должен ли я был там публиковаться или начал новую ветку ...:

Маркер CSRF отсутствует или неверен, хотя у меня {% csrf_token%}

Я не уверен, что мне нужно делать с кодом, чтобы csrfContext работал. Я пытаюсь использовать ModelForm для сбора данных в модель и записи их в таблицу MYSQL.ошибка:

Reason given for failure:
    CSRF token missing or incorrect.

Вот код:


    from django.shortcuts import render_to_response
    from djengo.template import RequestContext
    from django.http import HttpResponse, HttpRequest, HttpResponseRedirect
    from acmetest.models import Player
    from acmetest.models import PickForm

    csrfContext = RequestContext(request)
    return render_to_response('makepick.html', csrfContext)

    def playerAdd(request, id=None):
        form = PickForm(request.POST or None,
                           instance=id and Player.objects.get(id=id))

        # Save new/edited pick
        if request.method == 'POST' and form.is_valid():
            form.save()
            return HttpResponseRedirect('/draft/')

        return render_to_response('makepick.html', {'form':form})

Опять же,

Спасибо за помощь!

dpbklyn

Ответы [ 2 ]

0 голосов
/ 26 января 2012

Обновите ваш код таким образом:

from django.shortcuts import render
# from djengo.template import RequestContext <- this is not valid.

Эти две строки, как указал Юджи, не являются допустимыми Python, и, кроме того, они не нужны, если вы используете render Ярлык.

# csrfContext = RequestContext(request)
# return render_to_response('makepick.html', csrfContext)

Измените обратную строку:

 # return render_to_response('makepick.html', {'form':form})
   return render(request,'makepick.html',{'form':form})
0 голосов
/ 26 января 2012

Я предполагаю, что мы говорим о представлении playerAdd - вам нужно передать RequestContext ответу там.

def playerAdd(request, id=None):
    form = PickForm(request.POST or None,
                       instance=id and Player.objects.get(id=id))
    # Save new/edited pick
    if request.method == 'POST' and form.is_valid():
        form.save()
        return HttpResponseRedirect('/draft/')

    return render_to_response('makepick.html', RequestContext(request, {'form':form}))

Первые строки в вашем коде трудны для понимания и даже не выглядят корректными Python. Вы не можете использовать return снаружи функционального блока.

...