2014年3月23日 星期日

Django mysql insert into 中文資料: incorrect string value

在django 中使用model 自動creat mysql 的table 並不能直接設定 table 的語系設定,

所以必須從 my.cnf中來決解這個問題。

修改mysql  的設定檔,加入以下的設定。
# vim /etc/mysql/my.cnf

[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
collation-server = utf8_unicode_ci
init-connect='SET NAMES utf8'
character-set-server = utf8


正常來說,此時就可以正常insert data to mysql。

但是如果還是有問題的話,進入mysql consol界面check 一件事情。

# mysql -uroot -p

mysql > use yourdatabse;

mysql > show create table yourtable;

檢查這一行  
ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8

請create table時確定為utf8,如果不是utf8代表這table是在更改設定檔之前時,所create 出來的table。所以會一直無法寫入中文的data,因此再用django 的syncdb從新create table吧!

2014年3月4日 星期二

Django 中簡易配置static file (讓template 可以inclde javascript css image)

在 Django 中 開始一個project 後,到setting.py 中設定 STATIC_URL

# vim settings.py

import os
PROJECT_DIR = os.path.dirname(__file__)


STATIC_ROOT = os.path.join(PROJECT_DIR, 'static')

STATIC_URL = '/static/'

STATICFILES_DIRS = (
    ("js", os.path.join(STATIC_ROOT,'js')),
    ("css", os.path.join(STATIC_ROOT,'css')),
    ("images", os.path.join(STATIC_ROOT,'images')),
)


以後在這project底下建立一個 static 資料夾,資料夾中包括 js 、css及images

將來將你的javascript檔置入js中,css檔置入css及圖檔置入images

以上的配置並不需要在urls.py 中多做設定

======================================

接下來只要在你的templates 中的html 宣告正確的js、css、images正確位置正常include。

在temlates 中使用javascript的宣告方式
<script type="text/javascript" src="{{STATIC_URL}}js/jquery.js"></script>

在temlates 中使用css的宣告方式
<link rel="stylesheet" type="text/css" href="{{STATIC_URL}}css/style.css" media="screen" />
在temlates 中使用image的宣告方式
<img src="{{STATIC_URL}}images/me.jpg"" alt="img">


注意{{STATIC_URL}}就是取配置文件settings.py里的STATIC_URL变量,解析出来的就是:/static/。
而{{STATIC_URL}}css/style.css最终解析出来的就是我们想要的:/static/css/style.css,Django会根据配置文件找到相应的文件。

Reference:http://2goo.info/blog/panjj/Django/2012/11/18/544