我想自定义管理网站的网址,以便以我的母语(西班牙语)显示。我想要的是使用/ nuevo而不是/ add等。这可能吗?
答案 0 :(得分:1)
我认为这会做你想要的。 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
中使用此功能,但将网址文本更改为您的语言等效文字。
在您的示例中,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
之前我没见过这个功能,我怀疑很多人都这么认为我认为指出导入是有用的。