当前位置:   article > 正文

Pycharm+Django之使用模型_pycharm django model

pycharm django model

环境: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,修改为:

  1. INSTALLED_APPS = [
  2. 'django.contrib.admin',
  3. 'django.contrib.auth',
  4. 'django.contrib.contenttypes',
  5. 'django.contrib.sessions',
  6. 'django.contrib.messages',
  7. 'django.contrib.staticfiles',
  8. 'model', #添加的地方
  9. ]

修改DATABASE:

  1. DATABASES = {
  2. 'default': {
  3. 'ENGINE': 'django.db.backends.mysql',
  4. 'NAME': "hero_book",
  5. 'USER':'root',
  6. 'PASSWORD':'*******',
  7. 'HOST':'localhost',
  8. 'PORT':'3306'
  9. }
  10. }

编辑模型类:models.py

  1. from django.db import models
  2. class BookInfo(models.Model):
  3. title = models.CharField(max_length=20)
  4. pub_time = models.DateField()
  5. def __unicode__(self):
  6. return self.title
  7. class HeroInfo(models.Model):
  8. name = models.CharField(max_length=10)
  9. content = models.CharField(max_length=30)
  10. gender = models.BooleanField(default=True)
  11. book = models.ForeignKey(BookInfo)

(2)生成迁移文件:命令行进入到manage.py目录下:执行命令 python manage.py makemigrations。

a.对于上述代码,python3.6版在执行该命令时会报错

  1. book = models.ForeignKey(BookInfo)
  2. 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之使用模板(完成小项目)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/624569
推荐阅读
相关标签
  

闽ICP备14008679号