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数据库中是查询不到的。
所以,当我们需要使用数据时候,需要自己在数据库中进行建表:
未完待续……