折腾Django项目文件模板源于django-admin.py manage.py等生成的项目文件没有经典头注释:
#!/usr/bin/env python# -*- coding: utf-8 -*-而我写了一个含有中文的Django网页,manage.py runserver时提示error,说要在文件头加注:
# -*- coding: utf-8 -*-因源文件已保存为uft-8格式,那现在只要在文件头加注就OK(其实对Python文件、网页等对应编码理解得稀里糊涂 )。但总不可能一个个手动加注释吧,google搜索时使用“Django 模板”关键字搜到几乎是生成网页的template问题,水平不行没搜到项目文件模板怎么个改法。Django源码在手上,只好顺藤摸瓜了,从项目中的manage.p文件追寻如下一些文件:
D:\Python27\Lib\site-packages\django\core\management\__init__.pyD:\Python27\Lib\site-packages\django\utils\importlib.pyD:\Python27\Lib\site-packages\django\core\management\commands\startapp.pyD:\Python27\Lib\site-packages\django\core\management\templates.py在上面最后一个文件中handle方法有段代码有生成项目文件的模板相关:
if filename.endswith(extensions) or filename in extra_files: content = content.decode('utf-8') template = Template(content) content = template.render(context) content = content.encode('utf-8')修改这个方法,重新生成的项目文件已包含'# coding: utf-8'这货,小开心。但硬编码这生成代码不好,于是接着找找,最后找到了Django项目文件模板文件夹,尽情修改吧哈:
D:\Python27\Lib\site-packages\django\conf\app_templatePS: 话说Django这货为何不在模板上添加文件编码注释? 这不符合Python啊,想想是不得去Django源码上贡献一下哈,笑话了:)