1
我想自定义管理网站的网址,以便它们以我的母语(西班牙语)显示。我想要的是使用/ nuevo而不是/添加等等。这可能吗?Django管理网站重命名URL以匹配我的语言
我想自定义管理网站的网址,以便它们以我的母语(西班牙语)显示。我想要的是使用/ nuevo而不是/添加等等。这可能吗?Django管理网站重命名URL以匹配我的语言
我认为这是做你想做的。 ModelAdmin.get_urls()
但问题是,你如何将新网址连接到admin
视图?
默认get_urls()
在django/contrib/admin/options.py
,它有一些有点复杂的代码来生成默认的网址。
def get_urls(self):
from django.conf.urls.defaults import patterns, url
def wrap(view):
def wrapper(*args, **kwargs):
return self.admin_site.admin_view(view)(*args, **kwargs)
return update_wrapper(wrapper, view)
info = self.model._meta.app_label, self.model._meta.module_name
urlpatterns = patterns('',
url(r'^$',
wrap(self.changelist_view),
name='%s_%s_changelist' % info),
url(r'^add/$',
wrap(self.add_view),
name='%s_%s_add' % info),
url(r'^(.+)/history/$',
wrap(self.history_view),
name='%s_%s_history' % info),
url(r'^(.+)/delete/$',
wrap(self.delete_view),
name='%s_%s_delete' % info),
url(r'^(.+)/$',
wrap(self.change_view),
name='%s_%s_change' % info),
)
return urlpatterns
我会做的是使用在每个ModelAdmin
S的这个功能,但更改URL文本语言等同。
在你的榜样,add/
应该是这样的:
url(r'^nuevo/$',
wrap(self.add_view),
name='%s_%s_add' % info)
请注意,我用英语离开%s_%s_add
。
你可以包装这个函数,所以你不必在每个ModelAdmin类中包含整个东西。
编辑
该代码使用名为update_wrapper
功能,导入这样的:
from django.utils.functional import update_wrapper
我从来没有见过这个功能,我怀疑很多人都让我觉得这一定指出进口是有用的。
谢谢!这种机制看起来很麻烦并且很容易失败。网络上没有太多有关这样做的信息。当我完成时,我会小心并在这里张贴结果。 – Sergio 2011-04-28 18:36:28