环境:Win10,mysql ,
python2.7 下载地址: https://www.python.org/downloads/
Django1.10.8 下载地址: https://www.djangoproject.com/download/
Django是一个开源的web应用框架,由python编写,采用MVC框架,但不同的是,MVC在django的处理过程中不是被非常认同,实际项目开发过程中controller起到的作用也非常有限,所以django将控制器部分进行了封装,同时对view进行扩展,增加了模板功能实现前端网页的复用,所以django也就更加符合MVT处理的模式。
MVC结构:(注:图片来源网络)
MVT结构及功能:(注:图片来源网络)
1、在pycharm中创建Django项目(或使用:dganjo-admin startproject projectName):
在这里我们将:创建heroBook项目,在后续博客中陆续以该小项目为例学习Django。
2、使用模型(Model):
(1)定义模型类
Django规定,如果使用模型,必须创建一个app。使用命令:django-main startapp model,然后建立model/models.py,结构如下:
修改setting.py,找到INSTALLED_APPS,修改为:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'model', #添加的地方
]
修改DATABASE:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': "hero_book",
'USER':'root',
'PASSWORD':'*******',
'HOST':'localhost',
'PORT':'3306'
}
}
编辑模型类:models.py
from django.db import models
class BookInfo(models.Model):
title = models.CharField(max_length=20)
pub_time = models.DateField()
def __unicode__(self):
return self.title
class HeroInfo(models.Model):
name = models.CharField(max_length=10)
content = models.CharField(max_length=30)
gender = models.BooleanField(default=True)
book = models.ForeignKey(BookInfo)
(2)生成迁移文件:命令行进入到manage.py目录下:执行命令 python manage.py makemigrations。
a.对于上述代码,python3.6版在执行该命令时会报错:
book = models.ForeignKey(BookInfo)
TypeError: __init__() missing 1 required positional argument: 'on_delete'
解决方法:修改book = models.ForeignKey(BookInfo)为 book=models.ForeignKey('BookInfo',on_delete=models.CASCADE,)
即在外键值的后面加上 on_delete=models.CASCADE
原因:在django2.0后,定义外键和一对一关系的时候需要加on_delete选项,此参数为了避免两个表里的数据不一致问题,不然会报错: TypeError: __init__() missing 1 required positional argument: 'on_delete'
(3)执行迁移,将数据库与模型同步,用来创建表,执行命令:python manage.py migrate
b.出现错误:ModuleNotFoundError: No module named 'MySQLdb'
解决方案:python2.7,安装 MySQL-python-1.2.3.win-amd64-py2.7.exe (1.0 MiB) 下载地址:http://www.codegood.com/;
c.已经安装了mysql-python却依旧报错:django.db.utils.OperationalError: (1049, "Unknown database 'herobook'")
解决方法:登陆mysql : mysql -u root -p 回车,输入密码
然后创建一个对应的数据库:create database hero_book character set utf8
然后在执行2、3:如下图所示:
成功创建模型,并且在第二张图中倒数第二行红色框起来的model生成,表明数据库表成功生成。
4、我们可以进入数据库,验证有无表的生成,从下图可以知道,成功生成两张表,model_bookinfo 和 model_heroinfo.
5、操作数据库
(1)增加记录:
方法一:
方法二:使用create
(2)查询记录:
方法一:BookInfo.objects.all()
方法二:使用get指定查询。
方法三:values('字段')
用字典形式,返回的是指定字段的查询结果;
方法四:过滤查询 :filter()
返回一个新的查询集,它包含满足查询参数的对象。
(3)修改记录:
方法一:update()方法
方法二:对象赋值
(4)删除记录:delete()方法。
未完 待续.....
python+Django 之使用模型(开始小项目)
python+Django之后台站点管理
python+Django之视图和URL配置
python+Django之使用模板(完成小项目)