231 votes

Obtention de Django admin url pour un objet

Avant Django 1.0 il y a un moyen facile d'obtenir l'url administration d'un objet, et j'avais écrit un petit filtre que j'utilise comme ceci: <a href="{{ object|admin_url }}" .... > ... </a>

Fondamentalement, j'ai été en utilisant l'url de la fonction d'inversion avec le nom de la vue en cours 'django.contrib.admin.views.main.change_stage'

reverse( 'django.contrib.admin.views.main.change_stage', args=[app_label, model_name, object_id] )

pour obtenir l'url.

Comme vous l'avez deviné, je suis en train de mettre à jour vers la dernière version de Django, et c'est l'un des obstacles que je suis tombé sur cette méthode pour faire de l'admin url ne fonctionnent plus.

Comment puis-je faire dans django 1.0? (ou 1,1 pour cette question, comme je suis en train de mettre à jour vers la dernière version du svn).

542voto

markmuetz Points 2527

Vous pouvez utiliser le résolveur URL directement dans un modèle, il n’y a pas besoin d’écrire votre propre filtre. Par exemple

``

``

``

``

Réf : Documentation

126voto

Mike Ramirez Points 3528
<pre><code></code><p><a href="http://docs.djangoproject.com/en/dev/topics/http/urls/#defining-url-namespaces" title="url namespaces">espaces de noms URL</a>, admin : en application espace de noms par défaut de l’administrateur. </p></pre>

66voto

bskinner Points 829

J'ai eu un problème similaire où je voudrais essayer d'appeler reverse('admin_index') et a été constamment django.core.urlresolvers.NoReverseMatch d'erreurs.

S'avère que j'avais l'ancien format admin url dans mon urls.py fichier.

Je l'avais en ma urlpatterns:

(r'^admin/(.*)', admin.site.root),

qui obtient les admin écrans de travail, mais est obsolète façon de faire. J'avais besoin de le changer à cela:

(r'^admin/', include(admin.site.urls) ),

Une fois que je l'ai fait, tout le bien qui a été promis dans l' Inversion de l'Admin Url docs commencé à travailler.

20voto

Anentropic Points 7751

Post Django 1.4 il y a une autre façon, de voir les docs en bas de page:
https://docs.djangoproject.com/en/1.5/ref/contrib/admin/#reversing-admin-urls

{% load admin_urls %}
<a href="{% url opts|admin_urlname:'add' %}">Add user</a>
<a href="{% url opts|admin_urlname:'delete' user.pk %}">Delete this user</a>

opts est quelque chose comme mymodelinstance._meta ou MyModelClass._meta

Un gotcha est que vous ne pouvez pas accéder à souligner les attributs directement dans les modèles Django (comme {{ myinstance._meta }}), de sorte que vous avez à passer l' opts objet à partir de la vue en tant que modèle de contexte.

18voto

Alex Koshelev Points 5522

Pour pré 1.1 django, c’est simple (pour une instance par défaut admin site) :

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X