Własne strony w Panelu Admina Django
5 April 2010
Comments
Na blogu Beardy Geek pojawił się ciekawy artykuł opisujący jak dodać podstrony do panelu admina Django. Porusza on nie tylko podpięcie własnych widoków pod URLe wewnątrz /admin/, lecz także wykorzystanie szablonów i wewnętrznych elementów związanych z tą aplikacją.
URLe
Chcąc dodać własny widok musimy podpiąć go w urls.py nad regułą mapującą panel admina pod /admin/:(r'^admin/mypage/$', 'myapp.views.my_admin_view'),
(r'^admin/', include(admin.site.urls)),
Widok
Możemy wykorzystać dekorator staff_member_required by określić dostęp dla użytkowników posiadających flagę is_staff i mających normalnie dostęp do PA. Ważne jest też by przekazywać RequestContext do renderowanego szablonu:from django.contrib.admin.views.decorators import staff_member_required
@staff_member_required
def my_admin_view(request):
# kod widoku
return render_to_response('my_template.html',
context_instance=RequestContext(request))
Szablon
Dla identycznego wyglądu nasz szablon powinien wykorzystywać szablon panelu admina:{% extends 'admin/base_site.html' %}
{% load i18n adminmedia %}
Dodatkowe style można dodać do {% block extrastyle %} a dodatkowy JS w {% block extrahead %}.
Taże możemy zadbać o górną nawigację breadcrumbs podając odpowiednie linki, np:{% block breadcrumbs %}<div class="breadcrumbs"><a href="/admin/">{% trans "Home" %}</a> > Mój Widok</div>{% endblock %}
Dodatki
Można także nadpisywać szablony PA własnymi. W katalogu z szablonami projektu stwórz katalog admin i umieść w nim wszystkie szablony jakie mają być nadpisane. Np. nadpisując index.html możemy dodać dodatkowy prawy blok z linkami do dodanych przez nas podstron. Pod divem content-related możemy dodać<div class="module">
<h2>Dodatkowe strony</h2>
<ul class="actionlist">
<li class="changelink">
<a href="/admin/mypage/">Mój widok</a>
</li>
</ul>
</div>
RkBlog
Comment article