has*_*sen 157 django django-urls django-admin
在Django 1.0之前有一个简单的方法来获取一个对象的管理URL,我写了一个小的过滤器,我会像这样使用: <a href="{{ object|admin_url }}" .... > ... </a>
基本上我使用的是url reverse函数,视图名称为 'django.contrib.admin.views.main.change_stage'
reverse( 'django.contrib.admin.views.main.change_stage', args=[app_label, model_name, object_id] )
Run Code Online (Sandbox Code Playgroud)
得到网址.
正如您可能已经猜到的那样,我正在尝试更新到最新版本的Django,这是我遇到的障碍之一,获取管理URL的方法不再适用.
我怎么能在django 1.0中这样做?(或者1.1,因为我正在尝试更新到svn中的最新版本).
mar*_*etz 378
您可以直接在模板中使用URL解析器,无需编写自己的过滤器.例如
{% url 'admin:index' %}
{% url 'admin:polls_choice_add' %}
{% url 'admin:polls_choice_change' choice.id %}
{% url 'admin:polls_choice_changelist' %}
参考:文档
Mik*_*rez 97
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__())
Run Code Online (Sandbox Code Playgroud)
这类似于hansen_j的解决方案,除了它使用url命名空间,admin:是admin的默认应用程序命名空间.
小智 60
我有一个类似的问题,我会尝试打电话reverse('admin_index'),并不断收到django.core.urlresolvers.NoReverseMatch错误.
结果我在urls.py文件中有旧的格式管理URL.
我在我的urlpatterns中有这个:
(r'^admin/(.*)', admin.site.root),
Run Code Online (Sandbox Code Playgroud)
它使管理屏幕工作,但是不赞成这样做.我需要将其更改为:
(r'^admin/', include(admin.site.urls) ),
Run Code Online (Sandbox Code Playgroud)
一旦我这样做,Reversing Admin URL文档中承诺的所有善意就开始起作用了.
Ane*_*pic 13
对于更高版本,还有另一种方法,例如在1.10中:
{% 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>
Run Code Online (Sandbox Code Playgroud)
在哪里或opts类似的东西mymodelinstance._metaMyModelClass._meta
一个问题是您无法直接在Django模板中访问下划线属性(例如{{ myinstance._meta }}),因此您必须opts将视图中的对象作为模板上下文传递.
Ale*_*lev 10
对于1.1之前的django,它很简单(对于默认的管理站点实例):
reverse('admin_%s_%s_change' % (app_label, model_name), args=(object_id,))
Run Code Online (Sandbox Code Playgroud)
Ant*_*ins 10
基本上与Mike Ramirez的答案相同,但在文体学上更简单,更接近django标准get_absolute_url方法:
def get_admin_url(self):
return reverse('admin:%s_%s_change' % (self._meta.app_label, self._meta.model_name),
args=[self.id])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
125932 次 |
| 最近记录: |