2012-04-07 12 views
22

Ich möchte benutzerdefinierte Seite für Admin-Panel ohne Modell erstellen. Für die erste Kopie i index.html in Projektordner:Wie kann ich eine benutzerdefinierte Seite für django admin erstellen?

mysite/ 
    templates/ 
     admin/ 
      index.html 

Dann Apps blockieren meinen Code hinzufügen:

<div class="module"> 
    <table summary="{% blocktrans with name="preferences" %}Models available in the preferences application.{% endblocktrans %}"> 
     <caption><a href="preferences" class="section">{% blocktrans with name="preferences" %}Preferences{% endblocktrans %}</a></caption> 
      <tr> 
       <th scope="row"><a href="preferences">Preferences</a></th> 
       <td><a href="preferences" class="changelink">{% trans 'Change' %}</a></td> 
      </tr> 
    </table> 
</div> 

Dieses gut funktioniert, dann schaffe ich neue Seite/templates/admin/Einstellungen/Einstellungen .html und In urls.py:

url(r'^admin/preferences/$', TemplateView.as_view(template_name='admin/preferences/preferences.html')), 

und Code in der preferences.html:

{% extends "admin/base_site.html" %} 
{% block title %}Test page{% endblock %} 

Führen Sie es aus und sehen Sie die Nachricht mit dem Fehler "Die angeforderte Adminseite existiert nicht.". Was ich falsch mache?

+0

Zu welcher 'urls.py' haben Sie die URL hinzugefügt? Es kann sein, dass ein allgemeinerer Regex in Djangos Admin die '/ admin/preferences' erfasst, so dass es niemals Ihre URL regex erreicht. –

+0

Ich habe nur eine urls.py bei /mysite/mysite/urls.py, ich denke, das ist kein Fehler in URLs, weil ich keinen Fehler mit URLs Muster habe. – Gr1N

+0

Sie erhalten keine Fehlermeldung, wenn dies der Fall ist. Haben Sie versucht, die URL zu ändern, um zu sehen, ob Sie in diesem Fall die Admin-Seite erhalten? Zum Beispiel '^ testadmin/preferences/$'? –

Antwort

21

Sie benötigen Admin-URL vor die URL-Muster des Admin selbst hinzuzufügen:

urlpatterns = patterns('', 
    url(r'^admin/preferences/$', TemplateView.as_view(template_name='admin/preferences/preferences.html')), 
    url(r'^admin/', include('django.contrib.admin.urls')), 
) 

diese Weise wird die URL nicht von Djangos Admin bearbeitet werden.

+2

Wird die Seite geschützt oder ist sie für die Öffentlichkeit zugänglich? –

12

Sie sollten Admin get_urls verwenden.

+3

'get_urls' ist eine Methode von' ModelAdmin', die wiederum ein 'Model' benötigt, aber das OP möchte" speziell angepasste Seiten für das Admin-Panel ** ohne Modell ** erstellen ". (Betonung hinzugefügt.) – Louis

Verwandte Themen