Ich hasse es, diese Art von Frage zu stellen, die bereits in ähnlichen Fällen gelöst wurde, aber ich werde seit 3 Tagen darauf wütend.Django-ckeditor kann ich nicht auf meiner App setzen
Ich benutze Django 1.10 & Jquery 3.1.1 (bereits in meiner Seite für ein anderes Werkzeug geladen). Und versuche, django-ckeditor 5.1.1 an meinem Projekt zu arbeiten. Ich lese bereits die ckeditor_demo und es funktionierte, so dass das Paket richtig installiert ist.
Ich habe die Git doc folgen. Und verbrachte mehrere Stunden auf Stack.
Die von ckeditor betreffenden Einstellungen in meinem 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"
ich auch schon mit der Einstellung versucht:
CKEDITOR_JQUERY_URL = '//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js'
Es funktioniert auch nicht. Ich zog es vor, es zu entfernen, weil ich jquery 3.1.1 bereits in meiner Vorlage geladen habe.
Ich habe auch schon den manage.py collectstatic
Befehl (nach dem Schreiben meiner Einstellungen natürlich) ausgeführt.
mein 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
)
mein Modell:
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
meine Form:
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()
}
meiner Sicht:
@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())
meine Vorlage:
{% 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 %}
ich auch schon versucht, mit {{ propform.media }}
Hinzufügen es funktioniert auch nicht und nach dem doc, ist es nutzlos, wenn Sie die Skripte in Kopf hinzuzufügen.
Meine Seite lädt normal, alles funktioniert einwandfrei, keine Fehler im Terminal, aber statt meines CKEditorWidget habe ich noch meinen einfachen TextArea. Was mache ich falsch und/oder vergesse?
Bonus Frage: Ich muss nichts in mein CKeditorwidget hochladen. Welche Einstellungen und URL kann ich die 'ckeditor_uploader' App entfernen? MEDIA_URL, MEDIA_ROOT, CKEDITOR_UPLOAD_PATH, CKEDITOR_IMAGE_BACKEND? Die "ckeditor_uploader.urls"?
Vielen Dank für Ihre Zeit und Ihre Antworten