在使用Djiango框架前我们需要用虚拟环境来应用(虚拟环境的安装我就不写了百度都能找到),在创建的虚拟环境中安装Django和mysql(我用的是mysql的数据库)
创建一个名字为 h1的虚拟环境
mkvirtualenv h1
下载Django和mysql
建议安装1.8.2版本,这是一个稳定性高、使用广、文档多的版本 pip install django==1.8.2
mysql 安装 pip install mysql
创建一个项目
这样代表项目创建成功
进入test1目录,目录结构如下图:
manage,py :一个命令工具,可以使你用多种方式对Django项目进行交互
test1下面的内层目录:项目的真正的python包
_init.py:一个空文件,他告诉python这个目录被看作一个python包
.setting:项目的配置
.urls.py:项目的URL声明
wsgi.py:项目与WSGI兼容的Web服务器入口
开启服务器 python manage.py runserver
鼠标右键选择打开链接127.0.0.1你就会看到这样的页面
可以通过ctrl+c来停止服务器
设计介绍
本示例完成“图书-英雄”信息的维护,需要存储两种数据:图书、英雄
图书表结构设计:
表名:BookInfo
图书名称:btitle
图书发布时间:bpub_date
英雄表结构设计:
表名:HeroInfo
英雄姓名:hname
英雄性别:hgender
英雄简介:hcontent
所属图书:hbook
图书-英雄的关系为一对多
创建一个应用booktest
python manage.py startapp booktest
进入到test1里面的setting文件将项目添加到DATABASE_APP里面我用的是vim编辑器
将DATABASES改成mysql数据库 Django默认是sqlite数据库
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'test2',
'USER': '用户名',
'PASSWORD': '密码',
'HOST': '数据库服务器ip,本地可以使用localhost',
'PORT': '端口,默认为3306',
}
}
注意:需要在我们得站点得init文件
import pymysql
pymysql.install_as_MySQLdb()
注意执行这行代码需要安装pymysql这个包
进入booktest这个应用文件并进入models.py
在models.py里面输入
from django.db import models来导入模块
类名等于你数据库里面的表名
类下面的变量名等与你的字段名
models.*是你的数据类型 因为我们调了django模块所以我们用点语法来使用这个模块
字段类型
AutoField:一个根据实际ID自动增长的IntegerField,通常不指定
如果不指定,一个主键字段将自动添加到模型中
BooleanField:true/false 字段,此字段的默认表单控制是CheckboxInput
NullBooleanField:支持null、true、false三种值
CharField(max_length=字符长度):字符串,默认的表单样式是 TextInput
TextField:大文本字段,一般超过4000使用,默认的表单控件是Textarea
IntegerField:整数
DecimalField(max_digits=None, decimal_places=None):使用python的Decimal实例表示的十进制浮点数
DecimalField.max_digits:位数总数
DecimalField.decimal_places:小数点后的数字位数
FloatField:用Python的float实例来表示的浮点数
DateField([auto_now=False, auto_now_add=False]):使用Python的datetime.date实例表示的日期
参数DateField.auto_now:每次保存对象时,自动设置该字段为当前时间,用于"最后一次修改"的时间戳,它总是使用当前日期,默认为false
参数DateField.auto_now_add:当对象第一次被创建时自动设置当前时间,用于创建的时间戳,它总是使用当前日期,默认为false
该字段默认对应的表单控件是一个TextInput. 在管理员站点添加了一个JavaScript写的日历控件,和一个“Today"的快捷按钮,包含了一个额外的invalid_date错误消息键
auto_now_add, auto_now, and default 这些设置是相互排斥的,他们之间的任何组合将会发生错误的结果
TimeField:使用Python的datetime.time实例表示的时间,参数同DateField
DateTimeField:使用Python的datetime.datetime实例表示的日期和时间,参数同DateField
FileField:一个上传文件的字段
ImageField:继承了FileField的所有属性和方法,但对上传的对象进行校验,确保它是个有效的image
在项目和应用同级目录下输入
来迁移文件
在用python manage.py migrate
来执行迁移