首页 > 其他 > 详细

Django 应用程序 + 模型 + 基本数据访问

时间:2019-04-25 20:46:35      阅读:117      评论:0      收藏:0      [点我收藏+]

如果你只是建造一个简单的web站点,那么可能你只需要一个app就可以了。如果是复杂的象 电子商务之类的Web站点,你可能需要把这些功能划分成不同的app,以便以后重用。 

确实,你还可以不用创建app,例如以前写的视图,只是简单的放在 views.py ,不需要app。

当然,系统对app有一个约定:如果你使用了Django的数据库层(模型),你 必须创建一个django app。模型必须在这个app中存在。因此,为了开始建造 我们的模型,我们必须创建一个新的app。

转到 mysite 项目目录,执行下面的命令来创建一个新app叫做books:

python manage.py startapp books

在Python代码里定义模型

我们早些时候谈到。MTV里的M代表模型。Django模型是用Python代码形式表述的数据在数据库中的定义。对数据层来说它等同于 CREATE TABLE 语句,只不过执行的是Python代码而不是SQL,而且还包含了比数据库字段定义更多的含义。Django用模型在后台执行SQL代码并把结果用Python的数据结构来描述,这样你可以很方便的使用这些数据。

最后,我们要提醒你Django提供了实用工具来从现有的数据库表中自动扫描生成模型。 这对已有的数据库来说是非常快捷有用的。

 

在设置完setting.py的内容之后(详见https://blog.csdn.net/anualday/article/details/52639205),现在我们可以创建数据库表了。首先,用下面的命令对校验模型的有效性:

python manage.py check

validate 命令检查你的模型的语法和逻辑是否正确。如果一切正常,你会看到 errors found 消息。如果有问题,它会给出非常有用的错误信息来帮助你 修正你的模型。

一旦你觉得你的模型可能有问题,运行 python manage.py validate 。 它可以帮助你捕获一些常见的模型定义错误。

模型确认没问题了,运行下面的命令来生成 CREATE TABLE 语句:

python manage.py sqlall books

模型安装(掺杂django1*与2*的区别,区别很大):

 

 很多人读了Django老版本的书籍,却安装了比较新的Django,以至于在使用数据库时出了很多头疼的问题,我也不例外,不想再让别人继续被折磨了。现将本人遇到的一些问题以及解决的办法整理如下:(我的环境是Linux终端)

 

       一、 数据库的配置(可以省略,用sqlite不需要):

 

        1、首先你要保证在终端上安装了数据库(MySQL)。接下来在在里面创建你自己的数据库,比如create database djangodb.

 

        2、cd到你创建工程的目录,我的是username/djcode/website,然后cd 到mysite里,然后vim settings.py,对这个文件中的DATABASES项进行设置,完成后大概是这样的

 

         DATABASES = {
       default: {
        ENGINE: django.db.backends.mysql,
        NAME: django,#你使用的数据库名字
        USER: root,
        PASSWORD:‘‘,  #这里填写你的数据库密码
        HOST: localhost,
        PORT:3306,
         }
      }

 

 

       当你运行python manage.py shell时可能会遇到错误,比如提示你没有mysqldb,那你应该按照Python -easy -install

 

       二、创建模型

 

       还要把你的模型放在settings.py中INSTALLED_APPS。你的模型就是你在工程目录下执行python manage.py startapp books时创建的,名字不一定要叫books。创建完对其进行定义。然后你要激活模型,将 books app添加到配置文件的已安装应用列表中即可完成此步骤。设置完貌似是这样的:

 

       INSTALLED_APPS = [
    django.contrib.admin,
    django.contrib.auth,
    django.contrib.contenttypes,
    django.contrib.sessions,
    django.contrib.messages,
    django.contrib.staticfiles,
    books,  #不要忘记后面的逗号   这边要重点注意下,这是2*之后的语句,如果是1*的话语句是‘website/books‘
]

 

 

      定义并激活了模型,你可能会验证模型是否有效,如果我没说错,你可能会执行python manage.py validate ,然后你会特别伤心的看到人家提示Unknown command: ‘validate‘Type ‘manage.py help‘ for usage.,对吧?所以你要用如下这个命令:python manage.py check来验证。

 

      然后你还想生成sql语句,你就运行了python manage.py sqlall books,错误提示是Unknown command: ‘sqlall‘Type ‘manage.py help‘ for usage.同样如果你想提交sql语句到数据库而运行syncdb,错误提示是Unknown command: ‘syncdb‘
Type ‘manage.py help‘ for usage. 为什么没有这些命令,因为它们被淘汰了。所以你只需运行如下的命令:

 

    

  python manage.py makemigrations books    #用来检测数据库变更和生成数据库迁移文件

  python manage.py migrate     #用来迁移数据库

  python manage.py sqlmigrate books 0001 # 用来把数据库迁移文件转换成数据库语言

 

 

        在命令行依次执行完这三个命令你就可以进行数据访问了。

 

        因为我曾经被这些问题困扰 ,所以真心希望对看的这篇博客的人有所帮助。


基本数据访问:

 

>>> from books.models import Publisher
>>> p1 = Publisher(name=Addison-Wesley, address=75 Arlington Street,
...     city=Boston, state_province=MA, country=U.S.A.,
...     website=http://www.apress.com/)
>>> p1.save()
>>> p2 = Publisher(name="O‘Reilly", address=10 Fawcett St.,
...     city=Cambridge, state_province=MA, country=U.S.A.,
...     website=http://www.oreilly.com/)
>>> p2.save()
>>> publisher_list = Publisher.objects.all()
>>> publisher_list
[<Publisher: Publisher object(1)>, <Publisher: Publisher object(2)>]

 

这短短几行代码干了不少的事。这里简单的说一下:

  • 要创建对象,只需 import 相应模型类,并传入每个字段值将其实例化。

  • 调用该对象的 save() 方法,将对象保存到数据库中。Django 会在后台执行一条 INSERT 语句。

  • 使用属性 Publisher.objects 从数据库中获取对象。调用 Publisher.objects.all() 获取数据库中所有的 Publisher 对象。此时,Django 在后台执行一条 SELECT SQL语句。 

自然,你肯定想执行更多的Django数据库API试试看,不过,还是让我们先解决一点烦人的小问题。

 

Django 应用程序 + 模型 + 基本数据访问

原文:https://www.cnblogs.com/souhaite/p/10770811.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!