Проверка Django CSRF не удалась. Запрос прерван даже с @csrf_exempt

Это мой view.py Я пытаюсь получить ответ от платежного шлюза, но мне не удалось получить 403 Forbidden CSRF. Запрос прерван. после оплаты я освободил токен CSRF для представления, но все равно показывает ту же ошибку

from django.views.decorators.csrf import csrf_exempt

@csrf_exempt
def resp(request, encResp):
    print " RESPONSE WITH CSRF EXEMPT " 
    '''
    Please put in the 32 bit alphanumeric key in quotes provided by CCAvenues.
    '''
    workingKey = WorkingKey
    decResp = decrypt(encResp,workingKey)
    data = '<table border=1 cellspacing=2 cellpadding=2><tr><td>'   
    data = data + decResp.replace('=','</td><td>')
    data = data.replace('&','</td></tr><tr><td>')
    data = data + '</td></tr></table>'

    html = '''\
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
            <title>Response Handler</title>
        </head>
        <body>
            <center>
                <font size="4" color="blue"><b>Response Page</b></font>
                <br>
                $response
            </center>
            <br>
        </body>
    </html>
    '''
    fin = Template(html).safe_substitute(response=data)
    return HttpResponse(fin)

Я прочитал много решений в stackoverflow и попробовал, но все еще не могу понять это правильно.

Мой основной urls.py

url(r'^booked/', include('booking.urls')),

Мой urls.py в приложении с именем booking

urlpatterns = patterns('',
url(r'^responce-cc/', "booking.views.resp", name="cc_response_url"),)

и URL-адрес перенаправления, который я передаю платежному шлюзу,

https://www.mysitename.com/booked/responce-cc/

person Bijoy    schedule 12.12.2016    source источник
comment
С @csrf_exempt я не думаю, что вы можете получить ошибку проверки CSRF. Вы должны каким-то образом вызывать другое представление.   -  person RemcoGerlich    schedule 12.12.2016
comment
Нет, у меня есть правильный URL-адрес представления, но все равно возникает та же ошибка.   -  person Bijoy    schedule 13.12.2016
comment
Все-таки ошибка где-то в этом. Может быть, опубликовать весь ваш urlconf и URL-адрес, по которому вы звоните?   -  person RemcoGerlich    schedule 13.12.2016
comment
Я добавил urls.py для следующей проблемы   -  person Bijoy    schedule 14.12.2016
comment
У меня была такая же проблема, опять же в другом проекте, достаточно странно, я просто вставил представление с csrf_exempt в представление другого приложения (тот же проект) и настроил URL-адреса, и это сработало !!!   -  person Bijoy    schedule 28.04.2018


Ответы (2)


from ccavutil import encrypt,decrypt
from string import Template
from django.http import HttpResponse

def res(encResp):
'''
Please put in the 32 bit alphanumeric key in quotes provided by CCAvenues.
'''  
workingKey = 'WorkingKey'
decResp = decrypt(encResp,workingKey)
data = '<table border=1 cellspacing=2 cellpadding=2><tr><td>'   
data = data + decResp.replace('=','</td><td>')
data = data.replace('&','</td></tr><tr><td>')
data = data + '</td></tr></table>'

html = '''\
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Response Handler</title>
    </head>
    <body>
        <center>
            <font size="4" color="blue"><b>Response Page</b></font>
            <br>
            $response
        </center>
        <br>
    </body>
</html>
'''
fin = Template(html).safe_substitute(response=data)
return HttpResponse(fin)

Используйте приведенный выше код, чтобы все было на месте! :)

person Aman Khantaal    schedule 31.12.2016
comment
Это тот же код, который я написал, также я импортировал Template, HttpResponse и encrypt, decrypt . - person Bijoy; 02.01.2017

добавьте {% csrf_token %} где-то между body.

person user7285867    schedule 12.12.2016
comment
Я не могу добавить токен, ответ генерируется платежным шлюзом - person Bijoy; 13.12.2016