Pycharm+Django之使用模型

环境:Win10,mysql ,

python2.7 下载地址: https://www.python.org/downloads/

Django1.10.8 下载地址: https://www.djangoproject.com/download/

Pycharm+Django之使用模型_第1张图片

Django是一个开源的web应用框架,由python编写,采用MVC框架,但不同的是,MVC在django的处理过程中不是被非常认同,实际项目开发过程中controller起到的作用也非常有限,所以django将控制器部分进行了封装,同时对view进行扩展,增加了模板功能实现前端网页的复用,所以django也就更加符合MVT处理的模式。

MVC结构:(注:图片来源网络)

Pycharm+Django之使用模型_第2张图片

MVT结构及功能:(注:图片来源网络)

Pycharm+Django之使用模型_第3张图片

1、在pycharm中创建Django项目(或使用:dganjo-admin startproject projectName):

Pycharm+Django之使用模型_第4张图片

在这里我们将:创建heroBook项目,在后续博客中陆续以该小项目为例学习Django。

2、使用模型(Model):

     (1)定义模型类

Django规定,如果使用模型,必须创建一个app。使用命令:django-main startapp model,然后建立model/models.py,结构如下:

Pycharm+Django之使用模型_第5张图片

修改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/;

Pycharm+Django之使用模型_第6张图片

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生成,表明数据库表成功生成。

Pycharm+Django之使用模型_第7张图片

Pycharm+Django之使用模型_第8张图片

4、我们可以进入数据库,验证有无表的生成,从下图可以知道,成功生成两张表,model_bookinfo 和 model_heroinfo.

Pycharm+Django之使用模型_第9张图片

5、操作数据库

(1)增加记录:

方法一:

Pycharm+Django之使用模型_第10张图片

Pycharm+Django之使用模型_第11张图片

方法二:使用create

(2)查询记录:

方法一:BookInfo.objects.all()

方法二:使用get指定查询。

方法三:values('字段')用字典形式,返回的是指定字段的查询结果;

方法四:过滤查询 :filter()返回一个新的查询集,它包含满足查询参数的对象。

(3)修改记录:

方法一:update()方法

Pycharm+Django之使用模型_第12张图片

方法二:对象赋值

Pycharm+Django之使用模型_第13张图片

(4)删除记录:delete()方法。

Pycharm+Django之使用模型_第14张图片

未完 待续.....

 

python+Django 之使用模型(开始小项目)
python+Django之后台站点管理
python+Django之视图和URL配置
python+Django之使用模板(完成小项目)

你可能感兴趣的:(Django框架,Python学习篇)