Code

Opened 6 years ago

Closed 6 years ago

#8564 closed (duplicate)

newforms-admin doesn't support linking to it via {% url %} or reverse()

Reported by: semenov Owned by: nobody
Component: contrib.admin Version: master
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: UI/UX:

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:

  1. Extend reverse() and {% url %} to recognize/understand bound methods, in particular django.contrib.admin.site.root
  1. 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" %}

Attachments (0)

Change History (3)

comment:1 Changed 6 years ago by anonymous

  • Needs documentation unset
  • Needs tests unset
  • Patch needs improvement unset

comment:2 Changed 6 years ago by semenov

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.

comment:3 Changed 6 years ago by mattmcc

  • Resolution set to duplicate
  • Status changed from new to closed

Duplicate of #6470.

Add Comment

Modify Ticket

Change Properties
<Author field>
Action
as closed
as The resolution will be set. Next status will be 'closed'
The resolution will be deleted. Next status will be 'new'
Author


E-mail address and user name can be saved in the Preferences.

 
Note: See TracTickets for help on using tickets.