Запрещено (CSRF-токен отсутствует.): /ckeditorupload/ в django?
Когда я пытаюсь загрузить изображение в админ-панель django, я получаю следующее Forbidden (CSRF token missing.): /ckeditorupload/
У меня есть этот результат в моей консоли.
вот моя модель
from django.db import models
from django.contrib.auth.models import User
from ckeditor.fields import RichTextField
from ckeditor_uploader.fields import RichTextUploadingField
# Create your models here.
STATUS = (
(0,"Draft"),
(1,"Publish")
)
class Post(models.Model):
title = models.CharField(max_length=200, unique=True)
slug = models.SlugField(max_length=200, unique=True)
author = models.ForeignKey(User, on_delete= models.CASCADE,related_name='blog_posts')
updated_on = models.DateTimeField(auto_now= True)
#content = RichTextField(blank=True, null=True)
image = RichTextUploadingField()
#image = models.ImageField(upload_to='featured_image/%Y/%m/%d/') #
created_on = models.DateTimeField(auto_now_add=True)
status = models.IntegerField(choices=STATUS, default=0)
class Meta:
ordering = ['-created_on']
def __str__(self):
return self.title
мои взгляды
from django.views import generic
from .models import Post
from django.utils.decorators import method_decorator
from django.views.decorators.csrf import csrf_exempt
@method_decorator(csrf_exempt, name='dispatch')
class PostList(generic.ListView):
queryset = Post.objects.filter(status=1).order_by('-created_on')
template_name = 'index.html'
class PostDetail(generic.DetailView):
model = Post
template_name = 'post_detail.html'
Я пытался освободить CSRF, но у меня возникают те же проблемы, & когда я удаляю middlewareCsrf, это тоже не работает, так как я использую админку django, а не метод custom post, я не знаю, куда передавать {{ csrf_token }}
Спасибо за помощь :)
Некоторое время назад у меня была похожая проблема, как будто внезапно в пользовательской сессии больше не было доступно csrf_token
. После некоторой доработки это решило проблему.
импорт:
from django.middleware.csrf import get_token
в представлении:
csrf_token = get_token(request)
context = {
"csrf_token": csrf_token,
}
В шаблоне я все еще использую {% csrf_token %}
, но я также делаю некоторые вызовы API в JavaScript и в них я вместо этого использую непосредственно токен, который я передал через контекст -> {{ csrf_token }}