Opened 16 years ago
Closed 16 years ago
#8564 closed (duplicate)
newforms-admin doesn't support linking to it via {% url %} or reverse()
Reported by: | Ilya Semenov | Owned by: | nobody |
---|---|---|---|
Component: | contrib.admin | Version: | dev |
Severity: | Keywords: | newforms-admin reverse url | |
Cc: | Triage Stage: | Unreviewed | |
Has patch: | no | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description
In the old admin, that was possible to have a link to the admin area in the UI, like:
{% if user.is_staff %} <a href="{% url django.contrib.admin.views.main.index %}">Admin area</a> {% endif %}
or even:
<a href="{% url django.contrib.admin.views.main.change_stage "app","model",instance.id %}">Edit instance</a>
In newforms-admin, that crashes with:
Reverse for 'src.django.contrib.admin.site.root' not found.
I do realize that admin.site is now a Site instance, not a module, that's why {% url %} will never work for it.
However, I can't see how to put a link to the admin area now?
Currently I'm using the following hack:
urlpatterns = # ... #(r'^admin/(.*)', admin.site.root), (r'^admin/(.*)', 'views.admin_site_root'), # ... def admin_site_root(request, url): return admin.site.root(request, url)
and then:
<a href="{% url views.admin_site_root "" %}">Admin</a>
which is pretty ugly (since of complete redundancy) but solves the problem.
I defenitely think there should be a standard way to pull the admin site urls. I can suggest two approaches:
- Extend reverse() and {% url %} to recognize/understand bound methods, in particular django.contrib.admin.site.root
- Under django.contrib.admin.templatetags, create a set of tags like {% admin django.contrib.admin.site %} and {% admin_change_list django.contrib.site "app","model" %}
Change History (3)
comment:1 by , 16 years ago
comment:2 by , 16 years ago
Thanks, I overlooked the named patterns. That partly solves the problem: with a named pattern, I actually can point to the admin root like {% url admin "" %}
That is still not possible to link to a particular admin page, though, e.g. have something like {% url admin "/app/model/" + instance.id %}, which was possible in the old admin app.
You can use named url patterns. http://www.djangoproject.com/documentation/url_dispatch/#naming-url-patterns