Django从零开始----02创建一个应用

一、创建一个应用

进入项目根目录(manage.py文件所在的路径),在系统命令行中输入以下命令创建第一个Django应用:

python manage.py startapp blog
#以博客为例

这条命令会在项目根目录下创建一个如下结构的应用:

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

这些文件的含义为:

  • admin.py:用于将模型注册到管理后台,以便在Django的管理后台(Django administration site)查看。管理后台也是一个可选的应用。
  • apps.py:当前应用的主要配置文件
  • migrations这个目录包含应用的数据迁移记录,用来追踪数据模型的变化然后和数据库同步。
  • models.py:当前应用的数据模型,所有的应用必须包含一个models.py文件,但其中内容可以是空白。
  • test.py:为应用增加测试代码的文件
  • views.py:应用的业务逻辑部分,每一个视图接受一个HTTP请求,处理这个请求然后返回一个HTTP响应。

二、应用数据结构设计

随着项目越来越大,采用写原生SQL的方式在代码中会出现大量的SQL语句,那么问题就出现了:

  1. SQL语句重复利用率不高,越复杂的SQL语句条件越多,代码越长。会出现很多相近的SQL语句。
  2. 很多SQL语句是在业务逻辑中拼出来的,如果有数据库需要更改,就要去修改这些逻辑,这会很容易漏掉对某些SQL语句的修改。
  3. 写SQL时容易忽略web安全问题,给未来造成隐患。SQL注入。

由此ORM就来解决这样一些问题

ORM,全称Object Relational Mapping,中文叫做对象关系映射,通过ORM我们可以通过类的方式去操作数据库,而不用再写原生的SQL语句。通过把表映射成类,把行作实例,把字段作为属性,ORM在执行对象操作的时候最终还是会把对应的操作转换为数据库原生语句。使用ORM有许多优点:

  1. 易用性:使用ORM做数据库的开发可以有效的减少重复SQL语句的概率,写出来的模型也更加直观、清晰。
  2. 性能损耗小:ORM转换成底层数据库操作指令确实会有一些开销。但从实际的情况来看,这种性能损耗很少(不足5%),只要不是对性能有严苛的要求,综合考虑开发效率、代码的阅读性,带来的好处要远远大于性能损耗,而且项目越大作用越明显。
  3. 设计灵活:可以轻松的写出复杂的查询。
  4. 可移植性:Django封装了底层的数据库实现,支持多个关系数据库引擎,包括流行的MySQLPostgreSQLSQLite。可以非常轻松的切换数据库。
  • 创建ORM模型

ORM模型一般都是放在appmodels.py文件中。每个app都可以拥有自己的模型。并且如果这个模型想要映射到数据库中,那么这个app必须要放在settings.pyINSTALLED_APP中进行安装

首先在blog应用下的model.py文件中添加一个Post类:

from django.db import models
from django.contrib.auth.models import User


class Post(models.Model):
    STATUS_CHOICES = (('draft', 'Draft'), ('published', 'Publish'))
    title = models.CharField(max_length=250)
    slug = models.SlugField(max_length=250, unique_for_date='publish')
    author = models.ForeignKey(User, on_delete=models.CASCADE, related_name='blog_posts')
    body = models.TextField()
    publish = models.DateTimeField(auto_now_add=True)
    created = models.DateTimeField(auto_now_add=True)
    updated = models.DateTimeField(auto_now=True)
    status = models.CharField(max_length=10, choices=STATUS_CHOICES, default='draft')

    class Meta:
        ordering = ('-publish',)

    def __str__(self):
        return self.title

此时就定义完成了一个数据模型,各个模型的含义将在下一篇中具体解释

三、激活应用

为了让Django可以为应用中的数据模型创建数据表并追踪数据模型的变化,必须在项目里激活应用。要激活应用,编辑settings.py文件,添加blog.apps.BlogConfigINSTALLED_APPS设置中:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'blog.apps.BlogConfig',
]

四、数据同步与迁移

同步数据需要进行到根目录下,输入命令

python manage.py makemigrations blog

此时会在migrations/ 文件夹中生成一个新增0001_initial.py文件

最后继续输入命令对文件数据进行迁移

python manage.py migrate

五、数据模型迁移完成检查

打开数据库即可看到根据模型新建blog数据库表

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值