Django(一)基於mysql的網頁
Django是一個開源代碼的web代碼框架,其基於mvc框架,m爲模型,v爲視圖,c爲控制,一種優秀的軟件設計典範,用業務邏輯、數據、界面顯示分離的方法組織代碼。
本文即將搭建一個簡單的評論網頁,其使用mysql作爲數據存儲後端。
1、mysq安裝:
參見本博客中的mysql安裝
安裝完成後,需要下載python的mysql:MySQL-pyton,不過官網上的下載不支持64位數,下載的過程中會報錯,因此需要64位安裝包。
問題1:找不到python2.7,無法安裝:
實際上,當我們用python去查的時候,可以看到該pyhon的版本是2.7.1,根據相關資料,其原因是因爲64位需要再進行註冊一番:
import sys
from _winreg import *
# tweak as necessary
version = sys.version[:3]
installpath = sys.prefix
regpath = "SOFTWARE\\Python\\Pythoncore\\%s\\" % (version)
installkey = "InstallPath"
pythonkey = "PythonPath"
pythonpath = "%s;%s\\Lib\\;%s\\DLLs\\" % (
installpath, installpath, installpath
)
def RegisterPy():
try:
reg = OpenKey(HKEY_CURRENT_USER, regpath)
except EnvironmentError as e:
try:
reg = CreateKey(HKEY_CURRENT_USER, regpath)
SetValue(reg, installkey, REG_SZ, installpath)
SetValue(reg, pythonkey, REG_SZ, pythonpath)
CloseKey(reg)
except:
print "*** Unable to register!"
return
print "--- Python", version, "is now registered!"
return
if (QueryValue(reg, installkey) == installpath and
QueryValue(reg, pythonkey) == pythonpath):
CloseKey(reg)
print "=== Python", version, "is already registered!"
return
CloseKey(reg)
print "*** Unable to register!"
print "*** You probably have another Python installation!"
if __name__ == "__main__":
RegisterPy()
在python下執行該腳本,就可以將python進行註冊。
問題2:版本不正確:
由於剛開始從官網上下載的是1.2.5版本的mysql,信息已經被寫入,後續再安裝1.2.3的64位的mysql-python時候,使用import MySQLdb時候,報錯顯示版本不匹配。這個時候,就要使用pip卸載:
可以先用pip list查看安裝包,其中MySQL-python的安裝信息,包括版本號。然後使用pip uninstall MySQL-python卸載。卸載完成後,重新安裝64位版本。
安裝完成之後,關閉dos窗口,重新打開:這時候,再進行導入即可:
2、Windows下安裝Django:
這裏先在windows下安裝Django,下載包地址:
https://www.djangoproject.com/download/
下載完成後解壓到文件,執行python setup.py install進行安裝
安裝完成後,執行命令,查看是否正常:
3、windows下pip安裝:
爲了方便使用,windows下的pip安裝是必要的,pip地址:
http://my.oschina.net/uxstone/blog/511971?fromerr=2JTEGBmb
執行python get-pip.py即可安裝
或者下載源碼包:
https://pypi.python.org/pypi/pip#downloads
然後執行python setup.py install
驗證pip:
執行pip list可知道pip是否正常安裝
4、使用Django配置:
配置1:無法執行py文件:
在任意目錄下使用django-admin.py startproject myproject進行測試,發現並沒有生成相應的工程myproject。這裏會有一些問題:需要將註冊表中的數值項改爲:
HKEY_CLASSES_ROOTpy_auto_fileshellopencommand 將值"C:Python27python.exe""%1" 改爲 "C:Python27python.exe""%1"%*
完成後,運行:django-admin starproject myproject進行配置即可,即可發現生曾了對應的文件:
配置2:安裝數據庫(由於我們使用了mysql,故這裏不需要再安裝sqlite,如果要安裝,請參考如下:)
進入該文件夾,執行manage runserver,發現無法連接到數據庫,要是在ubuntu下,可直接使用sudo apt-get安裝sqlite(windows下需要編譯),但是是在windows下,真是好糾結,還需要手動安裝SQL數據庫,也是醉了,django的數據庫:
https://docs.djangoproject.com/en/1.9/topics/install/#database-installation
配置3:執行python manage.py migrate的時候報錯:unable to open database file:
網上查了很多文獻,但是很多都是說的是沒有使用絕對路徑,但是將setting怎麼進行更改都不可以,發現可能不是這個錯誤:
查看日誌,可能是sqlite沒有產生正確的數據庫,因此自己用python先調試一下。
發現含有中文字符的路徑可以無法產生db文件,因此這個錯誤是因爲路徑中包含了中文字符,也是醉了醉了……採用純英文路徑後,就可以正常的使用該數據庫。
配置4:Errno 10013:
在使用django的時候,有時候會報出10013錯誤:
出現這個錯誤的原因是:8000端口被佔用,比如,酷狗可能會佔用這個端口,故將酷狗退出,或者調用python manage.py runserver的時候指定另外一個端口。
5、創建第一個工程:
S1、創建鏈接的數據庫:
S2、創建工程:
django-admin startproject mysite
python manage.py migrate
python manage.py runserver
python manage.py startapp polls
在setting中加入該應用名稱,然後執行下面三條命令進行數據庫遷移:
python manage.py makemigrations polls
python manage.py sqlmigrate polls 0001
python manage.py migrate
S3、測試:
Python manage.py runserver
輸入127.0.0.1:8000查看是否正常使用。
6、數據庫中插入我們的數據:
6a)、建庫:
create database csvt default charset=utf8;
6b)、查詢:
其實,在我們沒有更改mysql的時候,是默認使用sqlite進行數據的存儲,因此,在我們的mysql數據庫中是查詢不到的。
所以,當我們需要使用數據時候,需要自己在數據庫中進行建表:
未完待續……