题前话:
Python的版本是2.7.6,Django版本是1.6
本人完全是Python新手,粗略看了下《The Django Book 2.0.chm》 以及《简明Python教程.chm》,准备从零开始,学习用Django搭建一个个人博客,现在此博文中记录下自己在这个过程中遇到的各种问题以及解决方法。
1.Django乱码问题
在用notepad写好html模板后,然后用Django引用,结果文中的中文全部乱码。即使我把html编码方式从ANSI换成了UTF8,依然无法解决问题。在网上搜索后,找到如下解决方案:
在settings.py中添加如下两行后,为方便,html文件换成了常用的ANSI:
FILE_CHARSET='gb18030'
DEFAULT_CHARSET='utf-8'
2.引用css、js、image等文件问题
在Django中引用静态文件真是一件头疼的问题,特别是对于习惯了普通htnl或php的程序员来说。普通的类似如下URL
<link rel="stylesheet" href="css/login.css" />
无法达到要求,因为它会到类似http://127.0.0.1:8000/css/lgoin.cs地址处寻找css文件。
解决方案,在settings.py确保django.contrib.staticfiles存在于INSTALLED_APPS中,然后在文件中已有添加如下两行
STATIC_URL = '/static/'
STATICFILES_DIRS=(
os.path.join(BASE_DIR,r'blog/html/static').replace('\\','/'),
)
其中,STATIC_URL默认已经存在,只需要添加后面的static文件的文件夹路径即可。
随后在views.py文件中如下使用视图函数:
from blog.settings import STATIC_URL
def loginpage(request):
static_url=STATIC_URL
return render_to_response('html/login.html',locals())
然后再html模板中所有引用static文件的地方如下定义:
<link rel="stylesheet" href="{{static_url}}css/login.css" />
3.Django返回的时间格式问题
在使用Django模型时,定义了一个自动添加的时间格式
posttime=models.DateTimeField(auto_now=True)
然后发现在数据库中存储的格式是:“2013-12-23 19:04:12”,但是直接在模板中使用这个时间值时却变成了:“十二月23,2013,2:26p.m”
解决方案:在模板中使用时间时,写成如下的格式:
{{articletime|date:"Y-m-d H:i:s"}}
4.Django网站URL最后不能自动添加“/”
Django在URL后面自动添加上斜杠“/”需要中间件支持。打开settings.py,确保django.middleware.common.CommonMiddleware这个中间件存在于MIDDLEWARE_CLASSES的列表中即可
5.Django报错:CSRF verification failed. Request aborted
暂时的解决办法只有在settings.py文件中的MIDDLEWARE_CLASSES中删除django.middleware.csrf.CsrfViewMiddleware这个中间件。。。