网上有很多关于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博客 ” ,链接:http://blog.itpub.net/88305/viewspace-742282/,如需转载,请注明出处,否则将追究法律责任。
![user_pic_default.png](http://blog.itpub.net/images/user_pic_default.png)
请登录后发表评论
登录
全部评论
<%=items[i].createtime%>
<%=items[i].content%>
<%if(items[i].items.items.length) { %>
<%for(var j=0;j
<%}%> <%if(items[i].items.total > 5) { %>
<%}%> <%}%>
<%=items[i].items.items[j].createtime%>
<%=items[i].items.items[j].username%> 回复 <%=items[i].items.items[j].tousername%>: <%=items[i].items.items[j].content%>
还有<%=items[i].items.total-5%>条评论
) data-count=1 data-flag=true>点击查看
<%}%>
转载于:http://blog.itpub.net/88305/viewspace-742282/