zoukankan      html  css  js  c++  java
  • Django新建第一个投票应用

    1:在Pycharm的命令端口,确保执行文件路径是与mysite同级

        $ python3 manage.py startapp polls
    

    系统会自动生成polls应用的目录,其结构如下

        polls/
            __init__.py
             admin.py
              apps.py
              migrations/
                  __init__.py
                  models.py
                  tests.py
                  views.py
    

    2:进行数据库配置
    打开mysite/settings.py配置文件,这是整个Django项目的设置中心。Django默认使用SQLite数据库,因为Python源生支持SQLite数据库,所以你无须安装任何程序,就可以直接使用它。当然,如果你是在创建一个实际的项目,可以使用类似PostgreSQL的数据库,避免以后数据库迁移的相关问题。

    mysite/settings.py

    Database

    https://docs.djangoproject.com/en/1.11/ref/settings/#databases

    DATABASES = {
    'default': {
    'ENGINE': 'django.db.backends.sqlite3',
    'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
    }

    如果你想使用其他的数据库,请先安装相应的数据库操作模块,并将settings文件中DATABASES位置的’default’的键值进行相应的修改,用于连接你的数据库。其中:

    ENGINE(引擎):可以是django.db.backends.sqlite3、django.db.backends.postgresql、django.db.backends.mysql、django.db.backends.oracle,当然其它的也行。
    NAME(名称):类似Mysql数据库管理系统中用于保存项目内容的数据库的名字。如果你使用的是默认的SQLite,那么数据库将作为一个文件将存放在你的本地机器内,此时的NAME应该是这个文件的完整绝对路径包括文件名,默认值os.path.join(BASE_DIR, ’db.sqlite3’),将把该文件储存在你的项目目录下。
    如果你不是使用默认的SQLite数据库,那么一些诸如USER,PASSWORD和HOST的参数必须手动指定!下面给出一个基于pymysql操作Mysql数据库的例子,更多细节参考后续的数据库章节。

    mysite/settings.py

    Database

    https://docs.djangoproject.com/en/1.11/ref/settings/#databases

    import pymysql # 一定要添加这两行!通过pip install pymysql!
    pymysql.install_as_MySQLdb()

    DATABASES = {
    'default': {
    'ENGINE': 'django.db.backends.mysql',
    'NAME': 'mysite',
    'HOST': '192.168.1.1',
    'USER': 'root',
    'PASSWORD': 'pwd',
    'PORT': '3306',
    }
    }

    注意:
    在使用非SQLite的数据库时,请务必预先在数据库管理系统的提示符交互模式下创建数据库,你可以使用命令:CREATE DATABASE database_name;。Django不会自动帮你做这一步工作。
    确保你在settings文件中提供的数据库用户具有创建数据库表的权限,因为在接下来的教程中,我们需要自动创建一个test数据表。(在实际项目中也需要确认这一条要求。)
    如果你使用的是SQLite,那么你无需做任何预先配置,直接使用就可以了。

    2:创建模型

    现在,我们来定义模型model,模型本质上就是数据库表的布局,再附加一些元数据。

    Django通过自定义Python类的形式来定义具体的模型,每个模型的物理存在方式就是一个Python的类Class,每个模型代表数据库中的一张表,每个类的实例代表数据表中的一行数据,类中的每个变量代表数据表中的一列字段。Django通过模型,将Python代码和数据库操作结合起来,实现对SQL查询语言的封装。也就是说,你可以不会管理数据库,可以不会SQL语言,你同样能通过Python的代码进行数据库的操作。Django通过ORM对数据库进行操作,奉行代码优先的理念,将Python程序员和数据库管理员进行分工解耦。

    在这个简单的投票应用中,我们将创建两个模型:Question和Choice。Question包含一个问题和一个发布日期。Choice包含两个字段:该选项的文本描述和该选项的投票数。每一条Choice都关联到一个Question。这些都是由Python的类来体现,编写的全是Python的代码,不接触任何SQL语句。现在,编辑polls/models.py文件,具体代码如下:

        # polls/models.py
    
        from django.db import models
    
    
        class Question(models.Model):
        question_text = models.CharField(max_length=200)
        pub_date = models.DateTimeField('date published')
    
    
        class Choice(models.Model):
        question = models.ForeignKey(Question, on_delete=models.CASCADE)
        choice_text = models.CharField(max_length=200)
        votes = models.IntegerField(default=0)
    

    3:启用模型
    上面的代码看着有点少,其实包含了大量的信息,据此,Django会做下面两件事:

    创建该app对应的数据库表结构
    为Question和Choice对象创建基于Python的数据库访问API
    但是,首先我们得先告诉Django项目,我们要使用投票app。

    要将应用添加到项目中,需要在INSTALLED_APPS设置中增加指向该应用的配置文件的链接。对于本例的投票应用,它的配置类文件PollsConfig是polls/apps.py,所以它的点式路径为polls.apps.PollsConfig。我们需要在INSTALLED_APPS中,将该路径添加进去:

    mysite/settings.py

    INSTALLED_APPS = [
    'polls',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    ]

      $ python manage.py makemigrations polls
    

    通过运行makemigrations命令,Django 会检测你对模型文件的修改,也就是告诉Django你对模型有改动,并且你想把这些改动保存为一个“迁移(migration)”。

    migrations是Django保存模型修改记录的文件,这些文件保存在磁盘上。在例子中,它就是polls/migrations/0001_initial.py,你可以打开它看看,里面保存的都是人类可读并且可编辑的内容,方便你随时手动修改。

        $ python manage.py migrate
    

    migrate命令对所有还未实施的迁移记录进行操作,本质上就是将你对模型的修改体现到数据库中具体的表上面。Django通过一张叫做django_migrations的表,记录并跟踪已经实施的migrate动作,通过对比获得哪些migrations尚未提交。

    但是现在,只需要记住修改模型时的操作分三步:

    在models.py中修改模型;
    运行python manage.py makemigrations为改动创建迁移记录;
    运行python manage.py migrate,将操作同步到数据库。

  • 相关阅读:
    MySQL手册
    字符串置换
    Java实现三角形计数
    Java实现求二叉树的路径和
    Excel催化剂开源第46波-按行列排列多个图形技术要点
    Excel催化剂开源第44波-窗体在Show模式下受Excel操作影响变为最小化解决方式
    Excel催化剂开源第45波-按原图大小导出图片
    个人永久性免费-Excel催化剂功能第105波-批量调整不规范的图形对象到单一单元格内存储
    Excel催化剂开源第42波-与金融大数据TuShare对接实现零门槛零代码获取数据
    Excel催化剂开源第43波-Excel选择对象Selection在.Net开发中的使用
  • 原文地址:https://www.cnblogs.com/bobo-wq/p/11650481.html
Copyright © 2011-2022 走看看