2010-01-11 3 views
8

Also versuche ich, TinyMCE mit einer einfachen View-Funktion zu starten, aber der Pfad zur tiny_mce.js-Datei wird vermasselt. Die Datei befindet sich unter /Users/home/Django/tinyMCE/media/js/tiny_mce/tiny_mce.js. Ich glaube, dass /media/js/tiny_mce/tiny_mce.js korrekt ist, da der Entwicklungsserver keinen Zugriff auf Dateien über dem Stamm des Django-Projektordners hat. In der gerenderten Seite wird im Debugger angegeben, dass die JavaScript-Datei nicht gefunden wurde. Dies liegt daran, dass versucht wurde, durch /js/tiny_mce/tiny_mce.js zu suchen, ohne den/media/Teil des Pfadnamens zu adressieren.Django erkennt den Pfad MEDIA_URL nicht?

Wie auch immer, hier ist das Skript-Snippet für das Javascript in einer Vorlage namens 'simple.html'. <script type="text/javascript" src="{{ MEDIA_URL }}/js/tiny_mce/tiny_mce.js"></script> <script type="text/javascript"> tinyMCE.init({ mode : "textareas", theme : "simple" }); </script>

Und das ist, was die wesentlichen Teile meiner Einstellungen ist.

MEDIA_ROOT = os.path.join(_base, 'media') 
MEDIA_URL = 'http://127.0.0.1:8000/media/' 
ADMIN_MEDIA_PREFIX = '/media/' 

INSTALLED_APPS = (
    'django.contrib.auth', 
    'django.contrib.contenttypes', 
    'django.contrib.sessions', 
    'django.contrib.sites', 
    'tinymce', 
) 
+0

Haben Sie sichergestellt, dass Sie 'MEDIA_URL' im Kontext für diese Vorlage übergeben? – ayaz

+0

Ich habe nicht vorher, aber jetzt bin ich. Immer noch ein Fehler "Seite fehlt". – RaDeuX

+0

Ich habe das Gefühl, dass ich das Django-Modul beschädigt haben könnte, als ich einige zusätzliche Sachen für Python2.5 über Fink installiert habe. Ich werde Django neu installieren und schauen, ob das irgendwas macht. – RaDeuX

Antwort

13

Sie entweder es auf die Vorlage, dass Sie vorgeschlagen oder manuell sicherstellen, wie andere haben passieren können Verwenden Sie einen RequestContext statt einfachen Kontext. RequestContext füllt den Kontext automatisch mit bestimmten Variablen, einschließlich MEDIA_URL und anderen medienbezogenen Variablen.

Beispiel von docs:

def some_view(request): 
    # ... 
    return render_to_response('my_template.html', 
           my_data_dictionary, 
           context_instance=RequestContext(request)) 
+0

Dies löste das Problem mit dem Pfadnamen. Allerdings wird das Javascript nicht richtig geladen, also muss ich etwas anderes falsch machen. – RaDeuX

6

Haben Sie den Medienkontext Prozessor in Ihren Einstellungen haben?

TEMPLATE_CONTEXT_PROCESSORS = (
    'django.core.context_processors.media', 
) 

Sie könnten auch etwas, wenn die Debug-Meldungen die folgenden in den Einstellungen versuchen setzen, um zu sehen zeigen:

TEMPLATE_DEBUG = True 
+0

Ich habe den Debug-Modus aktiviert, aber es gibt keine Fehler. Alles was es ist ist, dass die Javascript-Datei nicht geladen wird. – RaDeuX

+0

Nun, da ich genau hinschaue, lädt sich der Pfadname trotz korrekter Pfadangabe immer noch nicht.

3

Vielen Dank für Ihre Hilfe für alle. Ich konnte es als

settings.py lösen ->

MEDIA_ROOT = '/home/patrick/Documents/code/projects/test/media/' 
MEDIA_URL = 'http://localhost:8000/media/' 

urls.py ->

(r'^media/(?P<path>,*)$', 'django.views.static.serve',{'document_root': settings.MEDIA_ROOT}), 

index.html ->

img src="/media/images/logo.jpg" 

Nochmals, vielen Dank, ich wurde verrückt, um herauszufinden, wie ich das alles machen kann. Diese Lösung funktionierte für mich auf einer Django Version 1.2.5 Entwicklungsserver mit Ubuntu 10.04.

4

Bitte lesen Sie den offiziellen Django DOC sorgfältig durch und Sie werden die passendste Antwort finden.

Der beste und einfachste Weg, dies zu lösen, ist wie folgt.

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

urlpatterns = patterns('', 
    # ... the rest of your URLconf goes here ... 
) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) 

Die zugehörige URL ist: https://docs.djangoproject.com/en/1.5/howto/static-files/#serving-files-uploaded-by-a-user

0

Ich hatte ein ähnliches Problem, Ich habe einen Ein-Seiten-App und Anscheinend hatte ich einen Neuling Fehler, django vermisst meinen Medienpfad machte mich dies hatte:

url(r'^', home, name="home"), 

statt dessen:

url(r'^$', home, name="home"), 

die fehlende $ machte meine URL-Muster vermisse meine Medien-URL

0

Ich hatte auch das gleiche Problem, das ist, wie ich es getan habe.

Wenn Sie ein FileField in Ihrer Modellklasse anstelle von MEDIA_URL verwenden, verwenden Sie .url member, um auf die URL Ihrer Datei zuzugreifen. Für zB: so etwas wie dieser

href = "{{ some_object.file_name.url }}" 

hier file_name ist der Filefield in Modellklasse.