Django应用-第1章 创建项目、应用、数据库

一、查看Django版本号

$ python -c "import django;print(django.get_vesion())"

二、创建Django项目

在命令行中,cd到你想要用来保存代码的目录,运行命令:

$ django-admin startproject mysite

mysite是项目的名称。Django会在当前目录下生成一个mysite目录。目录结构如下:

mysite/
    manage.py
    mysite/
        __init__.py
        settings.py
        urls.py
        wsgi.py

目录文件作用如下:

  • 外层的mysite/根目录仅仅是项目的一个容器。它的命名对Django无关紧要;可重新命名为任何名字;
  • manage.py:一个命令行工具,可以使用多种方式对Django项目进行交互;可以在django-admin和manage.py中读到关于manage.py的所有细节
  • 内层的mysite/目录是你的项目的真正的Python包。它是你导入任何东西时将需要使用的Python包的名字(例如mysite.urls)
  • mysite/init.py:一个空文件,它告诉Python这个目录应该被看做一个Python包。可以在Python包官方文档了解。
  • mysite/setting.py:该Django项目的设置/配置。Django设置将告诉你这些设置如何工作。
  • mysite/urls.py:该Django项目的URL声明;你的Django站点的“目录”。你可以在URL路由器中阅读到关于URL的更多内容。
  • mysite/wsgi.py:用于你的项目的与WSGI兼容的Web服务器入口。更多细节参见如何利用WSGI进行部署

三、创建应用

应用是一个Web应用程序,它完成具体的事项–比如一个博客系统、一个存储公共档案的数据库或者一个简单的投票应用。

项目是一个特定网站中相关配置和应用的集合。一个项目可以包含多个应用。一个应用可以运用到多个项目中去。

应用可以放在Python path上的任何位置。

把应用放在manage.py文件同级目录下,这样可以将它作为顶层模块导入,而不是mysite的子模块导入。

cd到manage.py相同的目录下,并且键入以下命令来创建你的应用:

$ python manage.py startapp polls

polls目录结构如下:

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

四、定义应用模型

当编写一个数据库驱动的Web应用时,第一步就是定义该应用的模型–本质上,就是定义该模型所对应的数据库设计及其附带的元数据。

模型指出了数据的唯一、明确的真实来源。它包含了正在存储的数据的基本字段和行为。Django遵循DRY(Don`t repeat yourself)原则。这个原则的目标是在一个地方定义你的数据模型,并从它字段获得需要的信息。

迁移完全依照于你的模型文件且本质上只是一个历史记录,Django通过这个历史记录更新你的数据库模式使它与你现在的模型文件保持一致。

投票应用的模型

创建两个模型:

  • Question:该对象具有一个question_text(问题)属性和一个publish_date(发布时间)属性。
  • Choice:该对象具有一个choice_text(选择的内容)属性和一个votes(得票统计)属性。
  • 每个Choice与一个Question关联

编辑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)
    choice_text = models.CharField(max_length=200)
    votes = models.IntegerField(default=0)

每个模型都用一个类表示,该类继承自django.db.models.Model。每个模型有多个类的属性变量,而每一个类的属性变量又都代表了数据库表中的一个字段。

每个Field实例的名字(例如question_text或pub_date)就是字段的名字。你将在Python代码中使用到它的值,并且你的数据库将把它用作表的列名。

Field的第一个参数用来指定一个人类可读的名字,是可选的。如果没有提供这个参数,Django将使用实例名。

ForeignKey定义了一个关联。每个Choice都只关联一个Question。Django支持所有常见的数据库关联:多对一、多对多和一对一

五、注册激活模型

Django使用模型完成以下事情:

  • 为该应用创建数据库表(CREATE TABLE语句);
  • 为Question对象和Choice对象创建一个访问数据库的python API

编辑mysite/settings.py文件:

# mysite/settings.py

INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'polls',
)

默认情况下,INSTALLD_APPS包含下面的应用,它们都是Django与生俱来的:

  • django.contrib.admin –管理站点。
  • django.contrib.auth –认证系统
  • django.contrib.contenttypes –用于内容类型的框架
  • django.contrib.sessions –会话框架
  • django.contrib.messages –消息框架
  • django.contrib.staticfiles –管理静态文件的框架

1、注册应用,运行命令:

$ python manage.py makemigrations polls

查看迁移行为执行的SQL语句的命令:

$ pyhyon manage.py sqlmigrate polls 0001

sqlmigrate命令并不会在你的数据库上真正运行迁移文件–它只是把Django认为需要的SQL打印在屏幕上让你能够看到。还可运行python mangae.py check;它会检查你的项目中的模型是否存在问题,而不用执行迁移或者接触数据库。

2、运行migrate在你的数据库中创建模型所对应的表:

$ python manage.py migrate

migrate命令会找出所有还没有被应用的迁移文件,并且在你的数据库上运行它们–本质上来讲,就是使你的数据库模式和你改动后的模型进行同步。

迁移功能非常强大,可以让你在开发过程中不断修改你的模型而不用删除数据库或者表然后在重新生成一个新的–它专注于升级你的数据库且不丢失数据。

实现模型变更的三个步骤:

  • 修改你的模型(在models.py文件中)
  • 运行python manage.py makemigrations,为这些修改创建迁移文件
  • 运行python manage.py migrate,将这些改变更新到数据库中。

六、运行服务器,验证Django项目

  • 默认IP和端口运行服务器:

    $ python manage.py runserver
    

    浏览器访问http://127.0.0.1:8000/,看到”Welcome to Django”的页面。表示运行成功。

  • 改变端运行服务器:

    $ python manage.py runserver 8080
    
  • 改变服务器IP地址:

    $ python manage.py runserver 0.0.0.0:8000
    

七、使用数据库API

使用如下命令调用Python shell:

$ python manage.py shell

然后在shell中导入数据模型

>>>from polls.models import Question,Choice
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值