无法在我的应用程序上设置 django-ckeditor
Can not set django-ckeditor on my app
我讨厌问那种在类似情况下已经解决的问题,但我从 3 天开始就很生气。
我使用 django 1.10 和 Jquery 3.1.1(已经加载到我的页面中用于另一个工具)。并尝试让 django-ckeditor 5.1.1 在我的项目上运行。我已经阅读了 运行 和 ckeditor_demo 并且它有效,所以软件包已正确安装。
我已经关注了gitdoc。并在 Stack 上花了几个小时。
我的ckeditor关注的设置settings.py
:
from __future__ import absolute_import
import tempfile
import os
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
# Application definition
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.sites',
'blog',
'CreateYourLaws',
'captcha',
'registration',
'ckeditor',
'ckeditor_uploader',
]
# Plenty of others Settings for other tools...
# Settings for ckeditors
STATIC_URL = '/static/'
MEDIA_URL = '/media/'
STATIC_ROOT = os.path.join(tempfile.gettempdir(), 'ck_static')
MEDIA_ROOT = os.path.join(tempfile.gettempdir(), 'ck_media')
CKEDITOR_CONFIGS = {
'default': {
'toolbar': 'Basic',
},
}
CKEDITOR_UPLOAD_PATH = "uploads/"
CKEDITOR_IMAGE_BACKEND = "pillow"
我也已经尝试过设置:
CKEDITOR_JQUERY_URL = '//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js'
也不行。我更喜欢删除它,因为我已经在我的模板中加载了 jquery 3.1.1。
我也已经 运行 manage.py collectstatic
命令(当然是在编写我的设置之后)。
我的urls.py
:
from django.conf.urls import url, include
from . import views
from django.conf import settings
from django.conf.urls.static import static
#... and few others
urlpatterns = [
url(r'^$', views.home, name='home'),
# ... many others
url(r'^article/(\d+)$', views.view_article, name='article'),
url(r'^ckeditor/', include('ckeditor_uploader.urls'),)
] + static(
settings.STATIC_URL,
document_root=settings.STATIC_ROOT
) + static(
settings.MEDIA_URL,
document_root=settings.MEDIA_ROOT
)
我的模特:
from django.db import models
# Other imports...
from ckeditor.fields import RichTextField
class Reflection(models.Model):
title = models.CharField(max_length=150, blank=True, null=True)
# Some Attributes
class Meta:
abstract = True
#...
class Proposition(Reflection):
text = RichTextField()
# Other attributes
我的表格:
from django import forms
# other imports...
from CreateYourLaws.models import Proposition
from ckeditor.widgets import CKEditorWidget
class PropositionForm(forms.ModelForm):
class Meta:
model = Proposition
fields = ('title', 'text')
labels = {'title': ('Nommez votre proposition de loi'),
'text': ("votre proposition de loi")}
widgets = {
'text': CKEditorWidget()
}
我的看法:
@login_required
def view_article(request, id_article):
# A very good and interesting code...
if request.method == 'POST' and 'propform' in request.POST:
propform = PropositionForm(request.POST)
if propform.is_valid():
proptitle = propform.cleaned_data['title']
prop = propform.cleaned_data['text']
prp = Proposition.objects.create(text=prop,
title=proptitle,
autor=User,
content_object=Article)
prp.save()
propform = PropositionForm()
# A bit of code...
return render(request,
'main.html',
locals())
我的模板:
{% block script %}
<script type="text/javascript" src="{% static 'js/jstree.min.js' %}"></script>
<script type="text/javascript" src="{% static 'js/jquery-ui.min.js' %}"></script>
<link rel="stylesheet" type="text/css" href="{% static 'js/jquery-ui.min.css' %}"></link>
<script type="text/javascript" src="{% static 'js/myJS_CYL.js' %}"></script>
<script type="text/javascript" src="{% static "ckeditor/ckeditor/ckeditor.js" %}"></script>
<script type="text/javascript" src="{% static "ckeditor/ckeditor-init.js" %}"></script>
<style type="text/css" media="screen">
nav{display: block;}
</style>
{% endblock %}
{% block content %}
<section class="proposition">
<form action="{% url 'article' Article.id %}" method="post" class="propform">
{% csrf_token %}
{{ propform.as_p }}
<button type="submit" class="butprop" name="propform">Poster votre proposition </button>
</form>
</section>
{% endblock %}
我已经尝试过添加 {{ propform.media }}
它也不起作用,根据文档,如果你在 head 中添加脚本,它是没有用的。
我的页面正常加载,一切正常,终端没有错误,但我仍然有简单的 TextArea,而不是我的 CKEditorWidget。我做错了什么and/or忘记了?
奖励问题:我不需要在我的 CKeditorwidget 中上传任何东西。哪些设置和 URL 我可以删除 'ckeditor_uploader' 应用程序? MEDIA_URL、MEDIA_ROOT、CKEDITOR_UPLOAD_PATH、CKEDITOR_IMAGE_BACKEND? 'ckeditor_uploader.urls'?
感谢您的宝贵时间和回答
好的,抱歉 post。它正在工作,但不在正确的文本区域:我有一个页面,其中包含几个隐藏表单,文本区域根据用户的操作而出现。我想要一个专门与 Ckeditorwidget 一起工作的。
好的,我发现了主要问题:页面上的所有文本区域必须有不同的名称。我的页面中有 4 个不同的表单,每个表单中都有一个名为 'Text' 的字段,因此只有第一个表单正确加载了 CKeditor。
我讨厌问那种在类似情况下已经解决的问题,但我从 3 天开始就很生气。
我使用 django 1.10 和 Jquery 3.1.1(已经加载到我的页面中用于另一个工具)。并尝试让 django-ckeditor 5.1.1 在我的项目上运行。我已经阅读了 运行 和 ckeditor_demo 并且它有效,所以软件包已正确安装。
我已经关注了gitdoc。并在 Stack 上花了几个小时。
我的ckeditor关注的设置settings.py
:
from __future__ import absolute_import
import tempfile
import os
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
# Application definition
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.sites',
'blog',
'CreateYourLaws',
'captcha',
'registration',
'ckeditor',
'ckeditor_uploader',
]
# Plenty of others Settings for other tools...
# Settings for ckeditors
STATIC_URL = '/static/'
MEDIA_URL = '/media/'
STATIC_ROOT = os.path.join(tempfile.gettempdir(), 'ck_static')
MEDIA_ROOT = os.path.join(tempfile.gettempdir(), 'ck_media')
CKEDITOR_CONFIGS = {
'default': {
'toolbar': 'Basic',
},
}
CKEDITOR_UPLOAD_PATH = "uploads/"
CKEDITOR_IMAGE_BACKEND = "pillow"
我也已经尝试过设置:
CKEDITOR_JQUERY_URL = '//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js'
也不行。我更喜欢删除它,因为我已经在我的模板中加载了 jquery 3.1.1。
我也已经 运行 manage.py collectstatic
命令(当然是在编写我的设置之后)。
我的urls.py
:
from django.conf.urls import url, include
from . import views
from django.conf import settings
from django.conf.urls.static import static
#... and few others
urlpatterns = [
url(r'^$', views.home, name='home'),
# ... many others
url(r'^article/(\d+)$', views.view_article, name='article'),
url(r'^ckeditor/', include('ckeditor_uploader.urls'),)
] + static(
settings.STATIC_URL,
document_root=settings.STATIC_ROOT
) + static(
settings.MEDIA_URL,
document_root=settings.MEDIA_ROOT
)
我的模特:
from django.db import models
# Other imports...
from ckeditor.fields import RichTextField
class Reflection(models.Model):
title = models.CharField(max_length=150, blank=True, null=True)
# Some Attributes
class Meta:
abstract = True
#...
class Proposition(Reflection):
text = RichTextField()
# Other attributes
我的表格:
from django import forms
# other imports...
from CreateYourLaws.models import Proposition
from ckeditor.widgets import CKEditorWidget
class PropositionForm(forms.ModelForm):
class Meta:
model = Proposition
fields = ('title', 'text')
labels = {'title': ('Nommez votre proposition de loi'),
'text': ("votre proposition de loi")}
widgets = {
'text': CKEditorWidget()
}
我的看法:
@login_required
def view_article(request, id_article):
# A very good and interesting code...
if request.method == 'POST' and 'propform' in request.POST:
propform = PropositionForm(request.POST)
if propform.is_valid():
proptitle = propform.cleaned_data['title']
prop = propform.cleaned_data['text']
prp = Proposition.objects.create(text=prop,
title=proptitle,
autor=User,
content_object=Article)
prp.save()
propform = PropositionForm()
# A bit of code...
return render(request,
'main.html',
locals())
我的模板:
{% block script %}
<script type="text/javascript" src="{% static 'js/jstree.min.js' %}"></script>
<script type="text/javascript" src="{% static 'js/jquery-ui.min.js' %}"></script>
<link rel="stylesheet" type="text/css" href="{% static 'js/jquery-ui.min.css' %}"></link>
<script type="text/javascript" src="{% static 'js/myJS_CYL.js' %}"></script>
<script type="text/javascript" src="{% static "ckeditor/ckeditor/ckeditor.js" %}"></script>
<script type="text/javascript" src="{% static "ckeditor/ckeditor-init.js" %}"></script>
<style type="text/css" media="screen">
nav{display: block;}
</style>
{% endblock %}
{% block content %}
<section class="proposition">
<form action="{% url 'article' Article.id %}" method="post" class="propform">
{% csrf_token %}
{{ propform.as_p }}
<button type="submit" class="butprop" name="propform">Poster votre proposition </button>
</form>
</section>
{% endblock %}
我已经尝试过添加 {{ propform.media }}
它也不起作用,根据文档,如果你在 head 中添加脚本,它是没有用的。
我的页面正常加载,一切正常,终端没有错误,但我仍然有简单的 TextArea,而不是我的 CKEditorWidget。我做错了什么and/or忘记了?
奖励问题:我不需要在我的 CKeditorwidget 中上传任何东西。哪些设置和 URL 我可以删除 'ckeditor_uploader' 应用程序? MEDIA_URL、MEDIA_ROOT、CKEDITOR_UPLOAD_PATH、CKEDITOR_IMAGE_BACKEND? 'ckeditor_uploader.urls'?
感谢您的宝贵时间和回答
好的,抱歉 post。它正在工作,但不在正确的文本区域:我有一个页面,其中包含几个隐藏表单,文本区域根据用户的操作而出现。我想要一个专门与 Ckeditorwidget 一起工作的。
好的,我发现了主要问题:页面上的所有文本区域必须有不同的名称。我的页面中有 4 个不同的表单,每个表单中都有一个名为 'Text' 的字段,因此只有第一个表单正确加载了 CKeditor。