当我尝试文本编辑和其他文本相关的东西并保存它时,编辑器很好地完成了它的工作。但是当我尝试上传图片时,只需要一个不同的网址。我在窗户上。是因为这个原因,因为我在this post上看到了一个帖子,但它也没有帮助我。它确实得到了保存,每个人都有自己的缩略图。但它只是错误的网址。 我检查了图像的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中:
(r'^ckeditor/', include('ckeditor.urls')),
models.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 %}
答案 0 :(得分:1)
我有点时间让django-ckeditor运行我的Django应用程序,但最终还是破解了能够在本地机器上提供上传文件(在开发/测试期间)。
我建议做的第一件事 - 如果你还没有这样做 - 请阅读Django's documentation regarding static files。它可能有助于更好地了解事物的配置方式和原因。
从django-ckeditor installation documentation开始,第4步概述了CKEDITOR_UPLOAD_PATH
的用途。这与Django的内置MEDIA_ROOT
和STATIC_ROOT
类似,其中提供的路径不一定存储文件的路径。您必须在上载时指定存储文件的路径。这可以通过确保在项目设置文件中声明MEDIA_URL
全局变量来完成。
初始设置完成后,最后一步是让Django为您在本地使用的文件提供服务。 请注意:此方法仅用于开发和调试目的。请勿使用以下代码段部署您的代码。
您可以在"Serving static files during development"部分内通过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)
从那里开始,你应该全力以赴。
正如一个快速免责声明:我是一位经验丰富的专业人士。鉴于我的具体设置和环境,这种方法对我有用。结果可能会有所不同。
希望这有助于让您朝着正确的方向前进。祝你好运!
答案 1 :(得分:0)
CKEDITOR_UPLOAD_PATH与MEDIA_ROOT相关。
https://github.com/django-ckeditor/django-ckeditor#id2
在你的情况下它应该是
CKEDITOR_UPLOAD_PATH =&#39;&#39;
这对我有用。说实话,所有这些* _PATH问题对我来说可能是Django最难的部分。
UPD:我看到你的问题可能还有其他一些问题。但是我注意到你的配置错误,这就是为什么我想解决这个问题,因为我遇到了麻烦,其他人也可能会发现这个问题和我的答案。如果他们自发布之日起更改了默认设置,那么您的配置可能是正确的。答案 2 :(得分:0)
我做到了!!!
问题解决了!!!!!!
我和你一样有同样的问题。
你解决了吗?
你有没有改变
CKEDITOR_UPLOAD_PATH =&#39;上传/&#39;
别的什么?如果不对,不要改变。
每次使用django-ckeditor将图片成功上传到服务器后,django-ckeditor都会请求一个看起来像这样的网址
uploads/2015/06/11/app_software_360.jpg
这表明浏览器正在请求
本地主机:8000 /某处/某处/上传/ 2015/06/11 / app_software_360.jpg
但不是localhost:8000 / media / uploads / 2015/06/11 / app_software_360.jpg这是实际上正确的URL位置,但是django-ckeditor无法找到它。我想这与settings.py
有关您可以查看此页面github issue
将这些添加到settings.py
MEDIA_ROOT = os.path.join(BASE_DIR,&#34; media&#34;)
MEDIA_URL =&#39; / media /&#39;
有效!
如果您认为这有用,请竖起大拇指。 :)