首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >获取对象的Django管理url

获取对象的Django管理url
EN

Stack Overflow用户
提问于 2009-03-29 11:19:22
回答 9查看 171.5K关注 0票数 210

在Django1.0之前,有一种简单的方法可以获取对象的管理url,我已经编写了一个小过滤器,使用方式如下:<a href="{{ object|admin_url }}" .... > ... </a>

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

代码语言:javascript
复制
reverse( 'django.contrib.admin.views.main.change_stage', args=[app_label, model_name, object_id] )

来获取url。

正如你可能已经猜到的,我正在尝试更新到Django的最新版本,这是我遇到的一个障碍,获取管理url的方法不再有效。

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

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2009-05-11 21:40:14

我遇到过一个类似的问题,我试图调用reverse('admin_index'),但不断收到django.core.urlresolvers.NoReverseMatch错误。

原来我的urls.py文件中有旧格式的管理urls。

我的urlpattern中有这样的内容:

代码语言:javascript
复制
(r'^admin/(.*)', admin.site.root),

它可以让管理屏幕正常工作,但这是一种被弃用的方式。我需要将其更改为:

代码语言:javascript
复制
(r'^admin/', include(admin.site.urls) ),

一旦我这样做了,Reversing Admin URLs文档中承诺的所有好处都开始起作用了。

票数 65
EN

Stack Overflow用户

发布于 2010-05-28 23:22:17

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

{% url 'admin:index' %}

{% url 'admin:polls_choice_add' %}

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

{% url 'admin:polls_choice_changelist' %}

参考:Documentation

票数 476
EN

Stack Overflow用户

发布于 2009-11-12 17:17:33

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

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

票数 109
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/694477

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档