3_Django搭建博客----Model的编写

Django搭建博客----Model的编写

Django为MTV模式,也就是model、template和views

  • model:数据的存取层。负责业务对象和数据库的关系映射(ORM)。
  • template:展现层。负责如何把页面展示给用户(html)。
  • views:业务逻辑层。负责业务逻辑,并在适当时候调用Model和Template。

我自己的理解就是:·

M:model.py 就是和数据库打交道用的,创建表等操作(和MVC一样)

T:templates 存放HTML文件的

V:View 视图函数(逻辑处理)


接着上节讲到的内容:

  1. 在iblog的目录下执行:django-admin startapp article

运行结果如下:

在这里插入图片描述

  1. 写博客首先需要一个作者吧,我们既然写了,肯定不能把作者写成一个固定的数据。那么,我们就要建立一个用户app.

在iblog的目录下执行:django-admin startapp bloguser,运行结果和上面一样。

然后开始写数据层

model.py

下面的代码写在bloguser/model.py

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


class UserProfile(AbstractUser):
    author_name = models.CharField(max_length=64, verbose_name='作者名字')

    class Meta:
        # 建立的表名为UserProfile
        db_table = 'UserProfile'
        verbose_name = '用户'
        verbose_name_plural = verbose_name

    # 函数 __str__ 定义当调用对象的 str() 方法时的返回值内容
    def __str__(self):
        return self.username

这时,千万别忘记在settings.py文件的INSTALLED_APPS中,
添加我们新建立的app进行注册,如下:

INSTALLED_APPS = [
    ''''',
    ''''',
    'bloguser',
]

我们直接继承Django内置的AbstractUser,减轻了我们的代码压力。

继承AbstractUser时,需要在settings.py里声明一下.

即增加代码AUTH_USER_MODEL = 'bloguser.UserProfile'

  • 生产迁移文件

然后我们生成迁移文件。在控制台输入python manage.py makemigrations bloguser

注:后面的app名字bloguser可以不加,当添加时,只对声明的app生产迁移文件

执行完毕后,控制台显示:

Migrations for 'bloguser':
  bloguser\migrations\0001_initial.py
    - Create model UserProfile

这个时候我们可以发现在blogusermigrations目录下,会多了一个0001_initial.py文件。

  • 数据迁移

然后我们进行数据迁移。在控制台输入python manage.py migrate bloguser

控制台会显示如下:

Operations to perform:
  Apply all migrations: admin, auth, bloguser, contenttypes, sessions
Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying auth.0001_initial... OK
  Applying auth.0002_alter_permission_name_max_length... OK
  Applying auth.0003_alter_user_email_max_length... OK
  Applying auth.0004_alter_user_username_opts... OK
  Applying auth.0005_alter_user_last_login_null... OK
  Applying auth.0006_require_contenttypes_0002... OK
  Applying auth.0007_alter_validators_add_error_messages... OK
  Applying auth.0008_alter_user_username_max_length... OK
  Applying auth.0009_alter_user_last_name_max_length... OK
  Applying auth.0010_alter_group_name_max_length... OK
  Applying auth.0011_update_proxy_permissions... OK
  Applying bloguser.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying admin.0002_logentry_remove_auto_add... OK
  Applying admin.0003_logentry_add_action_flag_choices... OK
  Applying sessions.0001_initial... OK

这时,数据迁移也进行完成了。

这个时候可以根据自己选择的数据库工具进行查看,这里使用的是自带的sqlite3。这里不再进行讲解,后面我们会提到。

编写article的model

和上面一样,我们完成article的model的编写。

class Article(models.Model):
    art_title = models.CharField(max_length=128, verbose_name='文章标题')
    author = models.ForeignKey(UserProfile, on_delete=models.CASCADE, verbose_name='文章作者')
    art_body = models.TextField(verbose_name='文章内容')
    created_time = models.DateTimeField(auto_now_add=True, verbose_name='写作时间')
    # 文章更新时间
    updated_time = models.DateTimeField(auto_now=True, verbose_name='最近更新时间')

    class Meta:
        db_table = 'article'
        verbose_name = '文章'
        ordering = ('-created_time')
        verbose_name_plural = verbose_name

    def __str__(self):
        return self.art_title

讲到这里,说一下,这些代码虽然可以复制粘贴,但是我并不建议,希望你亲自敲一遍。

每当修改models.py文件,都必须用makemigrations和migrate这两条指令迁移数据。在迁移成功之后,Model的编写就算完成了。

按照刚刚的用户app,进行注册、生成迁移文件,进行数据迁移。

如果你使用的编译器是PyCharm,并且数据库使用的是sqlite,那么你只需要双击db.sqlite3,
即可看到刚刚我们生产的数据表,是不是很神奇呢。
如下:
在这里插入图片描述

还是建议大家手敲呀!!,别复制。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值