Ошибки CSRF при попытке добавить простой продукт в корзину - PullRequest
0 голосов
/ 26 декабря 2018

Я получаю ошибку

Ошибка проверки CSRF.Запрос отменен.

при попытке использовать «добавить в корзину» с простым приложением корзины, которое я написал.

Код в моем шаблоне:

<form action="{% url "cart:cart_add" instance.id %}" method="post">
    {% csrf_token %}
    {{ cart_product_form }}
    <input type="submit" value="add to cart">
</form>

И мои представленияfrom views.py:

@require_POST
def cart_add(request, product_id):
    cart = Cart(request)
    product = get_object_or_404(Product, id=product_id)
    form = CartAddProductForm(request.POST)
    if form.is_valid():
        cd = form.cleaned_data
        cart.add(product=product, quantity=cd['quantity'], update_quantity=cd['update'])
    return redirect('cart:cart_detail')

def cart_detail(request):
    template = loader.get_template('/webapps/my_webapp/furniture_site/cart/templates/cart/detail.html')
    cart = Cart(request)
    for item in cart:
        item['update_quantity_form'] = CartAddProductForm(initial={'quantity': item['quantity'], 'update': True})
    context={'cart': cart}
    return HttpResponse(template.render(context))

Насколько я понимаю, все выглядит нормально, чего мне не хватает?

Моя конфигурация промежуточного программного обеспечения:

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
    'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware',
]

Альтернативный видэто все еще не работает:

def cart_detail(request):
    cart = Cart(request)
    for item in cart:
        item['update_quantity_form'] = CartAddProductForm(initial={'quantity': item['quantity'], 'update': True})
    return render(request, 'cart/detail.html', {'cart': cart})

edit: Это не похоже на дублирование отмеченного вопроса, поскольку ответом на этот вопрос было использование render для запроса на возврат, что я и делаю.

1 Ответ

0 голосов
/ 26 декабря 2018

Очистить кеш и перезагрузить страницу.Если не решить, то дать точную трассировку ошибки.

Отредактировано: from django.template import RequestContext

return render_to_response('results.html', {'results' : results}, context_instance=RequestContext(request) )

Попробуйте это

...