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