2016-10-12 4 views
0

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

Antwort

0

Ok sorry für diesen Posten. Es funktioniert aber nicht rechts. Textbereich: Ich habe eine Seite mit mehreren versteckten Formularen mit unterschiedlichem Textbereich, die je nach Aktion der Benutzer erscheint. Und ich möchte eine speziell mit Ckeditorwidget arbeiten. Sorry für diesen Beitrag, ich bin kein Profi, nur ein Amateur.

0

Ok Ich habe das Hauptproblem gefunden: Alle Textbereiche müssen einen anderen Namen auf der Seite haben. Ich hatte 4 verschiedene Formen auf meiner Seite mit einem Feld namens "Text" in jeder Form, so dass nur der erste CKeditor richtig geladen hatte.

Verwandte Themen