获取对象的Django管理url

在Django 1.0之前,有一种简单的方法可以获取对象的管理网址,并且我写了一个小型过滤器,可以像这样使用: <a href="{{ object|admin_url }}" .... > ... </a>

基本上我使用的URL反向函数的视图名称是'django.contrib.admin.views.main.change_stage'

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

获取网址。

正如你可能已经猜到的那样,我试图更新到Django的最新版本,这是我遇到的障碍之一,获取管理网址的方法不再有效。

我如何在django 1.0中做到这一点? (或1.1,因为我试图更新到svn的最新版本)。


我有一个类似的问题,我会尝试调用reverse('admin_index')并且不断获取django.core.urlresolvers.NoReverseMatch错误。

原来,我在我的urls.py文件中使用了旧的格式管理网址。

我在我的urlpatterns中有这个:

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

这使得管理屏幕可以正常工作,但却是不赞成使用它的方式。 我需要将其更改为:

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

一旦我这样做了,在Reversing Admin URLs文档中承诺的所有优点开始工作。


您可以直接在模板中使用URL解析器,无需编写自己的过滤器。 例如

{% url 'admin:index' %}

{% url 'admin:polls_choice_add' %}

{% url 'admin:polls_choice_change' choice.id %}

{% url 'admin:polls_choice_changelist' %}

Ref:文档


from django.core.urlresolvers import reverse
def url_to_edit_object(object):
  url = reverse('admin:%s_%s_change' % (object._meta.app_label,  object._meta.model_name),  args=[object.id] )
  return u'<a href="%s">Edit %s</a>' % (url,  object.__unicode__())

这与hansen_j的解决方案类似,只不过它使用了url命名空间admin:作为管理员的默认应用程序名称空间。

链接地址: http://www.djcxy.com/p/62005.html

上一篇: Getting Django admin url for an object

下一篇: Dynamic text Colour on DateTimePicker UserControl