ITPub博客

首页 > Linux操作系统 > Linux操作系统 > django 管理台App_label中文显示

django 管理台App_label中文显示

原创 Linux操作系统 作者:ePower518 时间:2012-08-30 16:21:32 0 删除 编辑
网上有很多关于django工程的app_label中文设置的文档,都集中在如下两种方式:
1、在Models中的Meta中使用app_label =“xxx”;
但该方法有诸多不便,尤其是外键关系的Models都需要修改,同时一些连接目录页相应的有改动。故放弃这种方法的修改。
2、在admin的base_site.html模板中修改,或者使用Filter;但没有很彻底的修改文档。其他各页面还是显示app目录名称

故在此分享,个人对django 管理台的app中文设置方法:
1、修改admin管理后台涉及的几个html模板
django admin涉及的html模板如下:
   base.html
   base_sites.html
   index.html
   app_index.html
   change_form.html
   change_list.html
   object_history.html

所在目录是:%PYTHONHOME%\Lib\site-packages\django\contrib\admin\templates\admin

将上述几个html模板copy到相关app文件目录下的templates\admin 下;再做修改

2、自定义Filter tags
在应用下,新建一个templatetags文件夹,新建一个空文件__init__.py和Filter过滤器创建的py文件,如:
xxx_extras.py 文件名随便取

修改app_label的过滤器内容如下:
from django import template

register = template.Library()
@register.filter(name='transto')
def transto(value):
    logger.info('trans source string: '+value)
    if re.match(ur'xxx',value):
        resvalue = "xxx管理"
    else:
        if re.match(ur'xxx',value):
            resvalue = "xxx管理"
        else:
            resvalue = value             
    return resvalue

上述过滤器使用了re 正则表达式,因为在admin的模板中显示app_label等有不同的大小写和il18n 翻译的中文字符串。

3、修改admin涉及到的上述html文件
所有html模板要使用过滤器,首先必须load 过滤器:
  {% load xxx_extras %}

base.html  改动,将html中存在{{ title }}项的改为 
{{ title|transto }}

base_site.html 改动,将 {{ title }}  改为 {{ title|transto }}
并将Django 字符串修改为 相应的中文,比如 “ xxx 管理台”

index.html 改动:
       
       

app_index.html改动:
{% for app in app_list %}
   {{ app.name|transto }}
{% endfor %}

change_form.html改动:

change_list.html改动:

object_history.html改动:

注上述设计href的app_label不做中文app_label转换。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/88305/viewspace-742282/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
{{ app.name|transto }}