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

运行结果如下:

startapp

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

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

然后开始写数据层

model.py

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

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

    class Meta:         db_table = 'UserProfile'         verbose_name = '用户'         verbose_name_plural = verbose_name

    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 = '文章'         verbose_name_plural = verbose_name

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

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

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

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

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




上一篇: Django搭建个人博客---Django在Windows的环境搭建
下一篇: Django搭建个人博客----使用MYSQL