Django-ckeditor 404 错误

问题描述 投票:0回答:2

我在使用 django-ckeditor 时收到几个 404 错误。

This is what my static folder looks like

第一个是在

ckeditor.js
文件上,该文件位于
static/boot/ckeditor/ckeditor
,我收到的错误如下:
"GET /static/ckeditor.js HTTP/1.1" 404 1657

接下来,我在其他文档上收到一些错误,这些文档实际上位于我收到错误的文件夹中:

"GET .../AGAPE/static/boot/ckeditor/ckeditor/config.js?t=JB9C HTTP/1.1" 404 2494

"GET .../AGAPE/static/boot/ckeditor/ckeditor/skins/moono-lisa/editor.css?t=JB9C HTTP/1.1" 404 2548

"GET .../AGAPE/static/boot/ckeditor/ckeditor/lang/nl.js?t=JB9C HTTP/1.1" 404 2497

对于最后三个,我认为错误是由文件名末尾添加的字符引起的,例如

?t=JB9C
,但我不明白为什么要添加这些字符。

另外,我的

settings.py
文件:

STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static/boot/')
STATIC_FILES_DIRS = [
    os.path.join(BASE_DIR, 'static'),
    os.path.join(BASE_DIR, 'boot'),]

MEDIA_ROOT=os.path.join(os.path.dirname(BASE_DIR), 'media')
MEDIA_URL="/media/"

CKEDITOR_BASEPATH = os.path.join(os.path.dirname(STATIC_ROOT), 'ckeditor/ckeditor/')

CKEDITOR_UPLOAD_PATH = "uploads/"
CKEDIT_IMAGE_BACKEND = 'pillow'

CKEDITOR_CONFIGS = {
   'default': {
        'toolbar':[ ['CodeSnippet', ], ],
        'height': 400,
        'width': 900,
        'removePlugins': 'stylesheetparser',
        'extraPlugins': 'codesnippet',
   },
}

以及相关的

models.py
文件(在相关应用程序中):

from django.db import models
from django.contrib.auth.models import User
from ckeditor_uploader.fields import RichTextUploadingField
from ckeditor.fields import RichTextField

STATUS = (
    (0,"Draft"),
    (1,"Publish")
)

class Post(models.Model):
    title = models.CharField(max_length=200, unique=True)
    cover = models.ImageField(upload_to='images/')
    author = models.ForeignKey(User, on_delete= models.CASCADE,related_name='blog_posts')
    slug = models.SlugField(null=False, unique=True)
    def get_absolute_url(self):
        return reverse('post_detail', kwargs={'slug': self.slug})
    updated_on = models.DateTimeField(auto_now= True)
    content = RichTextUploadingField(blank=True)
    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

admin.py
文件(在相关应用程序中):

from django.contrib import admin
from .models import Post 

class PostAdmin(admin.ModelAdmin):
    list_display = ('title', 'status','created_on')
    list_filter = ("status",)
    search_fields = ['title', 'content']
    prepopulated_fields = {'slug': ('title',)}
    class Media:
        js = ('ckeditor.js',)
        # do not write '/static/ckeditor.js' as Django automatically looks 
        # in the static folder

admin.site.register(Post, PostAdmin)

urls.py
文件(全局):

from django.conf import settings
from django.conf.urls import url
from django.contrib import admin
from django.conf.urls import include
from django.urls import include, path
from django.conf.urls.static import static
from AGAPE import views
from articles import views
from django.views.generic.base import TemplateView
from django.conf.urls.i18n import i18n_patterns
from django.utils.translation import ugettext_lazy as _


urlpatterns = i18n_patterns(
    url(r'^$', TemplateView.as_view(template_name='home.html'), name='home'),
    url(r'^i18n/', include('django.conf.urls.i18n')),
    path('i8n/', include('django_translation_flags.urls')),
    url(r'^home', TemplateView.as_view(template_name='home.html'), name='home'),
    url(r'^overagape', TemplateView.as_view(template_name='overagape.html'),name='over_agape'),
    url(r'^QUIZ/', include('QUIZ.urls')),
    url(r'^admin/', admin.site.urls),
    url(r'^nested_admin/', include('nested_admin.urls')),
    url(r'^aspecteen', TemplateView.as_view(template_name='aspecteen.html'), name='aspecteen'),
    url(r'^aspecttwee', TemplateView.as_view(template_name='aspecttwee.html'), name='aspecttwee'),
    url(r'^aspectdrie',TemplateView.as_view(template_name='aspectdrie.html'),name='aspectdrie'),
    url(r'^aspectvier',TemplateView.as_view(template_name='aspectvier.html'),name='aspectvier'),
    url(r'^aspectvijf',TemplateView.as_view(template_name='aspectvijf.html'),name='aspectvijf'),
    url(r'^articles/', include('articles.urls')),
    url(r'^ckeditor/', include ('ckeditor_uploader.urls')),
) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
javascript python django ckeditor
2个回答
0
投票

我遇到了同样的问题,问题出在我在模板中调用 ckeditor 的脚本。

以前是这样的;

<script type="text/javascript" src="{% static ' ckeditor/ckeditor-init.js' %}"></script>
<script type="text/javascript" src="{% static ' ckeditor/ckeditor/ckeditor.js' %}"></script>

撇号符号和 ckeditor 路径之间的空格导致 django 将其称为;

"GET /static/%20ckeditor/ckeditor-init.js HTTP/1.1" 404 1706    
"GET /static/%20ckeditor/ckeditor/ckeditor.js HTTP/1.1" 404 1718

删除空格后问题就消失了。在某些情况下可能会有所帮助。


0
投票

在最后添加以下脚本

  <script>               
      CKEDITOR.replace( '.ckeditor');
   </script>

© www.soinside.com 2019 - 2024. All rights reserved.