[Django] Fehlende Icons im Admin-Oberfläche

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
Benutzeravatar
Mawilo
User
Beiträge: 452
Registriert: Sonntag 22. Februar 2004, 10:58
Wohnort: Sachsen
Kontaktdaten:

Hallo,

wenn ich auf meiner Webseite über das Admin-Oberfläche einen Beitrag speicher, bekomme ich folgende Fehlermeldung per Mail:

Code: Alles auswählen

Traceback (most recent call last):
  File "/usr/lib/python2.5/site-packages/django/core/handlers/base.py", line 86, in get_response
    response = callback(request, *callback_args, **callback_kwargs)
  File "/usr/lib/python2.5/site-packages/django/contrib/admin/options.py", line 208, in wrapper
    return self.admin_site.admin_view(view)(*args, **kwargs)
  File "/usr/lib/python2.5/site-packages/django/contrib/admin/sites.py", line 148, in inner
    return view(request, *args, **kwargs)
  File "/usr/lib/python2.5/site-packages/django/db/transaction.py", line 238, in _commit_on_success
    res = func(*args, **kw)
  File "/usr/lib/python2.5/site-packages/django/contrib/admin/options.py", line 585, in change_view
    obj = model._default_manager.get(pk=unquote(object_id))
  File "/usr/lib/python2.5/site-packages/django/db/models/manager.py", line 93, in get
    return self.get_query_set().get(*args, **kwargs)
  File "/usr/lib/python2.5/site-packages/django/db/models/query.py", line 336, in get
    clone = self.filter(*args, **kwargs)
  File "/usr/lib/python2.5/site-packages/django/db/models/query.py", line 522, in filter
    return self._filter_or_exclude(False, *args, **kwargs)
  File "/usr/lib/python2.5/site-packages/django/db/models/query.py", line 540, in _filter_or_exclude
    clone.query.add_q(Q(*args, **kwargs))
  File "/usr/lib/python2.5/site-packages/django/db/models/sql/query.py", line 1491, in add_q
    can_reuse=used_aliases)
  File "/usr/lib/python2.5/site-packages/django/db/models/sql/query.py", line 1434, in add_filter
    connector)
  File "/usr/lib/python2.5/site-packages/django/db/models/sql/where.py", line 52, in add
    obj, params = obj.process(lookup_type, value)
  File "/usr/lib/python2.5/site-packages/django/db/models/sql/where.py", line 265, in process
    params = self.field.get_db_prep_lookup(lookup_type, value)
  File "/usr/lib/python2.5/site-packages/django/db/models/fields/__init__.py", line 210, in get_db_prep_lookup
    return [self.get_db_prep_value(value)]
  File "/usr/lib/python2.5/site-packages/django/db/models/fields/__init__.py", line 361, in get_db_prep_value
    return int(value)

ValueError: invalid literal for int() with base 10: 'add/img/admin/icon_clock.gif'
Die Meldung kommt auch noch einmal mit dem icon_calendar.gif. Es werden keine Icons angezeigt. Ansonsten funktioniert alles normal.

Im Verzeichnis usr/lib/python2.5/site-packages/django/contrib/admin/media/img/admin/ gibt es die entsprechenden Bilder.

In der settings.py habe ich ADMIN_MEDIA_PREFIX = '/admin_media/' angegeben und im Projektordner einen Link von admin_media zu usr/lib/python2.5/site-packages/django/contrib/admin/media/ gelegt.

Was habe ich da übersehen?


Grüße
Mawilo
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Mawilo hat geschrieben:

Code: Alles auswählen

  File "/usr/lib/python2.5/site-packages/django/db/models/fields/__init__.py", line 361, in get_db_prep_value
    return int(value)

ValueError: invalid literal for int() with base 10: 'add/img/admin/icon_clock.gif'
Denke es hat überhaupt nichts mit statischen Dateien zu tun. In einem Model Feld für eine Zahl, wird versucht der String 'add/img/admin/icon_clock.gif' zu speichern.

Hier wäre die betreffende URL hilfreich.

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
Mawilo
User
Beiträge: 452
Registriert: Sonntag 22. Februar 2004, 10:58
Wohnort: Sachsen
Kontaktdaten:

Das Model hat ein DateTimeField(). Dort sollten ja das Icon für die Uhr und den Kalender angezeigt werden.

Code: Alles auswählen

class Beitrag(models.Model):
    titel = models.CharField('Titel', max_length=150, blank=True)
    inhalt = models.TextField('Beitrag')
    datum = models.DateTimeField()
    bereich = models.CharField('Kategorie', max_length=50, choices=bereiche)
    thema = models.CharField('Thema', max_length=50, choices=themen)
    sortierung = models.PositiveIntegerField('Sortierung', blank=True)

    class Meta():
        verbose_name = 'Beitrag'
        verbose_name_plural = 'Beiträge'
        ordering = ['sortierung']

    def __unicode__(self):
        return 'Titel: %s  (Bereich: %s Thema: %s)'%(self.titel, self.bereich, self.thema)

class BeitragOptions(admin.ModelAdmin):
    class Media:
        js = ('js/tiny_mce/tiny_mce.js',
              'js/tiny_mce/textareas.js',)


admin.site.register(Beitrag, BeitragOptions)
Mir ist nicht ganz klar, welche URL hilfreich wäre, da es doch die Standard-Admin-Oberfläche ist.

Grüße
Mawilo
nemomuk
User
Beiträge: 862
Registriert: Dienstag 6. November 2007, 21:49

http://www.mail-archive.com/django-user ... 60083.html

Vllt. hilft dir dieser Link weiter, du musst MEDIA_ROOT setzen.
Benutzeravatar
Mawilo
User
Beiträge: 452
Registriert: Sonntag 22. Februar 2004, 10:58
Wohnort: Sachsen
Kontaktdaten:

MEDIA_URL und MEDIA_ROOT habe ich gesetzt.

Code: Alles auswählen

MEDIA_ROOT = '/pages/mysite/media/'
MEDIA_URL = 'http://www.mysite.de/media/'
ADMIN_MEDIA_PREFIX = '/admin_media/'
Wie gesagt - alles andere sieht normal aus. Nur die Icon fehlen. Wenn ich Debug=True setze, erhalte ich auch keine Fehler angezeigt.
nemomuk
User
Beiträge: 862
Registriert: Dienstag 6. November 2007, 21:49

Hast du das hier zu deinen urlpatterns hinzugefügt?
(r'^static/(?P<path>.*)$', 'django.views.static.serve', {'document_root': 'dein_admin_media_ordner'}),
Benutzeravatar
Mawilo
User
Beiträge: 452
Registriert: Sonntag 22. Februar 2004, 10:58
Wohnort: Sachsen
Kontaktdaten:

Ja, das habe ich zugefügt - hat aber keine Auswirkungen. Der Fehler muss mit der Klasse

Code: Alles auswählen

BeitragOptions(admin.Model)
zusammen hängen. Wenn ich nur

Code: Alles auswählen

admin.site.register(Beitrag)
verwende, habe ich zwar keinen Editor mehr - dafür die zwei Icons :?
apollo13
User
Beiträge: 827
Registriert: Samstag 5. Februar 2005, 17:53

SchneiderWeisse hat geschrieben:Hast du das hier zu deinen urlpatterns hinzugefügt?
(r'^static/(?P<path>.*)$', 'django.views.static.serve', {'document_root': 'dein_admin_media_ordner'}),
Das ist blödsinn und macht Django im devel mode automatisch.
apollo13
User
Beiträge: 827
Registriert: Samstag 5. Februar 2005, 17:53

Mawilo hat geschrieben:Ja, das habe ich zugefügt - hat aber keine Auswirkungen. Der Fehler muss mit der Klasse

Code: Alles auswählen

BeitragOptions(admin.Model)
zusammen hängen. Wenn ich nur

Code: Alles auswählen

admin.site.register(Beitrag)
verwende, habe ich zwar keinen Editor mehr - dafür die zwei Icons :?
Schau doch mal nach, welche scripts eingebunden werden und ob Fehler in der Error Console (des Browsers) stehen
Benutzeravatar
Mawilo
User
Beiträge: 452
Registriert: Sonntag 22. Februar 2004, 10:58
Wohnort: Sachsen
Kontaktdaten:

Wenn ich nur

Code: Alles auswählen

admin.site.register(Beitrag)
verwende, so erhalte ich in Firebug folgenden Code für das Kalendericon:

Code: Alles auswählen

<a id="calendarlink0" href="javascript:DateTimeShortcuts.openCalendar(0);">
<img src="http://www.mysite.de/admin_media/img/admin/icon_calendar.gif" alt="Kalender"/>
</a>
Die Icons werden angezeigt.
Verwende ich aber

Code: Alles auswählen

class BeitragOptions(admin.ModelAdmin):
    class Media:
        js = ('js/tiny_mce/tiny_mce.js',
              'js/tiny_mce/textareas.js',)
mit

Code: Alles auswählen

admin.site.register(Beitrag, BeitragOptions)
so erhalte ich diese Ausgabe:

Code: Alles auswählen

<a id="calendarlink0" href="javascript:DateTimeShortcuts.openCalendar(0);">
<img src="img/admin/icon_calendar.gif" alt="Kalender"/>
</a>
Mit der Klasse BeitragOptions(admin.ModelAdmin) binde ich den TinyMCEditor ein. Damit scheint aber Django durcheinander zu kommen, und kennt den richtigen Pfad zu den Icons nicht mehr. :?

In der Doku kann ich auch nichts anderes finden.

Hat noch jemand einen Tipp für mich?
Benutzeravatar
Mawilo
User
Beiträge: 452
Registriert: Sonntag 22. Februar 2004, 10:58
Wohnort: Sachsen
Kontaktdaten:

Tja, das scheint ein Problem mit Django und Firefox 3.5 zu sein. Wenn ich die Admin-Oberfläche mit Opera 9, Opera 10, Konqueror, IE6 oder IE7 öffne, ist alles ok. :shock:
Nur mit Firefox 3.5 fehlen die Icons und ich erhalte eine Fehlermeldung per Mail.
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Das klingt komisch. Was sagt denn das Access-Log? D.h. welche Requests schickt denn der Firefox 3.5, die alle anderen Browser nicht schicken?

Stefan
apollo13
User
Beiträge: 827
Registriert: Samstag 5. Februar 2005, 17:53

ich tipp auf nen kaputten admin media path, oder zumindest was in die Richtung; Schau mal nach ob du die Media files mit ADMIN_MEDIA_PREFIX prefixen musst. Wennns nicht geht pack das Projekt und lad es wo hoch (so, dass man es nur entpacken braucht und es rennt), dann schau ich mir das genau an. Ich hab hier keine Probleme mit ff 3.5
Benutzeravatar
Mawilo
User
Beiträge: 452
Registriert: Sonntag 22. Februar 2004, 10:58
Wohnort: Sachsen
Kontaktdaten:

sma hat geschrieben:Was sagt denn das Access-Log? D.h. welche Requests schickt denn der Firefox 3.5, die alle anderen Browser nicht schicken?
Hier die Access-Log-Einträge vom Firefox:

Code: Alles auswählen

[06/Sep/2009:08:47:35 +0200] "GET /admin HTTP/1.1" 301 -
[06/Sep/2009:08:47:35 +0200] "GET /admin/ HTTP/1.1" 200 6180
[06/Sep/2009:08:47:39 +0200] "GET /admin/beitrag/beitrag/add/ HTTP/1.1" 200 5504
[06/Sep/2009:08:47:39 +0200] "GET /admin/jsi18n/ HTTP/1.1" 200 1915
[06/Sep/2009:08:47:40 +0200] "GET /media/js/tiny_mce/plugins/zoom/editor_plugin.js HTTP/1.1" 404 1315
[06/Sep/2009:08:47:40 +0200] "GET /media/js/tiny_mce/plugins/flash/editor_plugin.js HTTP/1.1" 404 1315
[06/Sep/2009:08:47:40 +0200] "GET /media/js/tiny_mce/plugins/zoom/editor_plugin.js HTTP/1.1" 404 1315
[06/Sep/2009:08:47:41 +0200] "GET /admin/beitrag/beitrag/add/img/admin/icon_calendar.gif HTTP/1.1" 301 -
[06/Sep/2009:08:47:41 +0200] "GET /admin/beitrag/beitrag/add/img/admin/icon_clock.gif HTTP/1.1" 301 -
[06/Sep/2009:08:47:41 +0200] "GET /admin/beitrag/beitrag/add/img/admin/icon_calendar.gif/ HTTP/1.1" 500 1020
[06/Sep/2009:08:47:41 +0200] "GET /admin/beitrag/beitrag/add/img/admin/icon_clock.gif/ HTTP/1.1" 500 1020
und vom Konqueror:

Code: Alles auswählen

[06/Sep/2009:08:51:22 +0200] "GET /admin/ HTTP/1.1" 200 6180
[06/Sep/2009:08:51:24 +0200] "GET /admin/beitrag/beitrag/add/ HTTP/1.1" 200 5504
[06/Sep/2009:08:51:25 +0200] "GET /admin/jsi18n/ HTTP/1.1" 200 1915
[06/Sep/2009:08:51:25 +0200] "GET /media/js/tiny_mce/plugins/zoom/editor_plugin.js HTTP/1.1" 404 1201
[06/Sep/2009:08:51:25 +0200] "GET /media/js/tiny_mce/plugins/flash/editor_plugin.js HTTP/1.1" 404 1201
apollo13 hat geschrieben:Schau mal nach ob du die Media files mit ADMIN_MEDIA_PREFIX prefixen musst
Ich habe in der settings.py den Pfad gesetzt:

Code: Alles auswählen

ADMIN_MEDIA_PREFIX = '/admin_media/'
Wenn ich den Eintrag offen lasse

Code: Alles auswählen

ADMIN_MEDIA_PREFIX = ''
dann habe ich natürlich die Oberfläche mit Editor aber ohne die Icons für Kalender und Uhr. Mit der Einstellung

Code: Alles auswählen

ADMIN_MEDIA_PREFIX = '/media/'
bekomme ich die Admin Oberfläche im Stil der Webseite, da die css der Webseite verwendet werden. Es werden auch keine Icons angezeigt.

Ggf. kann man den Fehler nachstellen, wenn man den TinyMCE einbindet. Für mich sieht es so aus, als gibt es ein Problem mit der Verarbeitung von Javascript.
Ich habe auch eine Diskussion über das Problem gefunden.


PS:
Ist als Ticket aufgenommen.
Antworten