Я пытаюсь использовать AJAX POST с Django в соответствии с docs - это отлично работает, если я зашел на сайт. Но если я выйду из системы или с помощью инкогнито, мой csrftoken не будет установлен - я попытался поставить {{csrf_token}}
, чтобы проверить, что возвращает значение NOTPROVIDED
.Django csrftoken не установлен
Что может быть причиной того, что токен не генерируется?
- Я использую
render
, так что я не думаю, что это context processor issue django.middleware.csrf.CsrfViewMiddleware
присутствует, и я не изменил какие-либо параметры по умолчанию CSRFensure_csrf_cookie
декоратор работает отлично
Я запускаю Django 1.7.
Упрощенная версия зрения (без ensure_csrf_cookie
декоратора):
def pg2(request, **kwargs):
name_slug = kwargs.pop('name_slug')
num_guests = request.session['guests']
date = request.session['date']
venue = get_object_or_404(Venue, name_slug=name_slug)
try:
rental = request.session['rental']
except:
rental = None
filtered_items = Item.objects.filter(venue_id=venue.pk)
context = {'venue':venue, 'rental':rental, 'filtered_items':filtered_items}
return render(request, 'app/pg2.html', context)
Мой промежуточного слоя в настройках:
MIDDLEWARE_CLASSES = (
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.common.BrokenLinkEmailsMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.contrib.redirects.middleware.RedirectFallbackMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'project.middleware.SecureRequiredMiddleware', # to add SSL
)
Вы можете прочитать об использовании [Ajax в документации Django] (https://docs.djangoproject.com/en/1.9/ref/csrf/#ajax) как Что ж; если вы используете jQuery, [здесь находится обертка] (https://github.com/thornomad/django-hitcount/blob/master/hitcount/static/hitcount/jquery.postcsrf.js), которая делает бизнес для вас. – thornomad
Спасибо @thornomad, как уже упоминалось, я следил за кодом в документах. Что не работает, поскольку csrftoken даже не генерируется в первую очередь - обновил вопрос. – wasabigeek
Возможно, разместите свой код, например, 'views.py'. Какая версия Django? – thornomad