0

当我尝试文本编辑和其他与文本相关的东西并保存它时,编辑器很好地完成了它的工作。但是当我尝试上传图片时,它只需要一个不同的网址。我在窗户上。是不是因为这个,因为我在这个帖子上看到了一个帖子,但它也没有帮助我。它确实被保存了,而且他们每个人都有自己的缩略图。但它只是错误的网址。我查看了图片的src,是这样的,

<img alt="" src="/media/3/10/17Hydrangeas.jpg" />

但应该是这样的,

<img alt="" src="/media/2013/10/17/Hydrangeas.jpg" />

而有时候图片的src就是这样的,

<img alt="" src="/media/3/10/17" />

这是我的 settings.py 的片段:

CKEDITOR_UPLOAD_PATH = 'C:/Users/Nanyoo/web/demo/media'
MEDIA_ROOT = 'C:/Users/Nanyoo/web/demo/media'

我在我的 urls.py 中包含了它的 url:

(r'^ckeditor/', include('ckeditor.urls')),

模型.py:

from django.db import models
from datetime import datetime
from django.contrib.auth.models import User
from time import time


def get_upload_file_name(instance, filename):
    return "uploaded_files/%s_%s" %(str(time()).replace('.','_'), filename)

class Blog(models.Model):
    title = models.CharField(max_length=200)
    image = models.ImageField(upload_to=get_upload_file_name, blank=True)
    pub_date = models.DateTimeField(default=datetime.now)
    creator = models.ForeignKey(User, related_name="creator_set")
    body = models.TextField()

在 forms.py 中:

from django import forms
from django_summernote.widgets import SummernoteWidget
from ckeditor.widgets import CKEditorWidget

class BlogForm(forms.Form):
    title = forms.CharField(max_length=200,widget=SummernoteWidget())
    body = forms.CharField(widget=CKEditorWidget())

在 index.html 中:

        {% for blog in blogs %}
        <div id="page">
                <h1>{{ blog.title | safe}}</h1>
                <p>{{ blog.body | safe}}</p>
        </div>
        {% endfor %}

我在html中的表格:

{% block content %} 
    <form method="post" action=".">
    {% csrf_token %}
    <fieldset id="create_blog">
        {{form.media}}
        {{ form.as_p}}
        <input type="submit" value="Post Blog" />
    </fieldset>
    </form>
{% endblock %}
4

3 回答 3

2

我花了一些时间让 django-ckeditor 启动并与我的 Django 应用程序一起运行,但最终破解了我的方式,能够在本地机器上提供上传的文件(在开发/测试期间)。

我建议做的第一件事——如果你还没有这样做的话——是阅读Django 的关于静态文件的文档。它可能有助于更好地了解事物的配置方式和原因。

django-ckeditor 安装文档中,第 4 步概述了CKEDITOR_UPLOAD_PATHThis works 的目的类似于 Django 的内置MEDIA_ROOTand STATIC_ROOT,其中提供的路径不一定是存储文件的路径。您必须指定在上传时存储文件的路径。这可以通过确保您MEDIA_URL在项目设置文件中声明了一个全局变量来完成。

完成初始设置后,最后一步是使 Django 能够在本地提供您正在使用的文件。请注意:此方法仅用于开发和调试目的。不要部署包含以下代码段的代码。

您可以在“开发期间提供静态文件”部分中通过 Django 的静态文件操作方法阅读更多关于此方法的信息。

在项目的 urls.py 文件中,添加以下代码,使 Django 能够为您的本地数据提供服务。

from django.conf import settings
from django.conf.urls.static import static

urlpatterns = patterns(
    '',
    # existing url patterns,
    # ...,
) + static(settings.MEDIA_URL, document_root=settings.STATIC_ROOT)

从那里开始,您应该准备就绪。

快速免责声明:到目前为止,我是一位经验丰富的专业人士。考虑到我的特定设置和环境,这种方法对我有用。结果可能会有所不同。

希望这有助于使您朝着正确的方向前进。祝你好运!

于 2013-12-16T23:33:15.897 回答
0

CKEDITOR_UPLOAD_PATH 相对于 MEDIA_ROOT。

https://github.com/django-ckeditor/django-ckeditor#id2

在你的情况下,它应该是

CKEDITOR_UPLOAD_PATH = ''

这对我有用。老实说,所有这些 *_PATH 问题对我来说可能是 Django 中最难的部分。

UPD:我知道您的问题可能属于其他类型。但是我注意到您的配置中的错误,这就是我想解决这个问题的原因,因为我遇到了麻烦,其他人也可能会发现这个问题和我的答案。也许你的配置是正确的,如果他们在你发帖后改变了默认设置。

于 2015-03-29T21:33:04.143 回答
0

我做到了 !!!

问题解决了 !!!!!!

我和你有同样的问题。

你解决了吗?

你有没有改变

CKEDITOR_UPLOAD_PATH = '上传/'

到别的东西??错了就不要改。

每次我使用 django-ckeditor 成功将图片上传到服务器后,django-ckeditor 都会请求一个如下所示的 URL

uploads/2015/06/11/app_software_360.jpg

这表明浏览器正在请求

本地主机:8000/somewhere/someplace/uploads/2015/06/11/app_software_360.jpg

但不是 localhost:8000/media/uploads/2015/06/11/app_software_360.jpg 这实际上是正确的 URL 位置,但 django-ckeditor 就是找不到它。我想这与settings.py有关

您可以查看此页面 github问题

通过将这些添加到 settings.py

MEDIA_ROOT = os.path.join(BASE_DIR, "媒体")

MEDIA_URL = '/媒体/'

有用!

如果您认为这有帮助,请点赞。:)

于 2015-06-11T20:30:08.110 回答