Skip to content

2 使用代码生成器

DealiAxy edited this page May 30, 2021 · 1 revision

使用代码生成器

DjangoStarter内置业务代码生成器,开发者只需要专注于编写最核心的 models.py 完成模型定义,其他代码自动生成,减少重复劳动,解放生产力。

设计模型

首先完成 models.py 里的模型设计,编写规范可以参照 apps/core/models.py

下面是一个简单的模型设计例子:

from django.db import models


class Author(models.Model):
    name = models.CharField('作者名称', max_length=20)

    def __str__(self):
        return self.name

    class Meta:
        verbose_name = '作者'
        verbose_name_plural = verbose_name


class Article(models.Model):
    name = models.CharField('文章名称', max_length=20)
    content = models.TextField('文章内容')
    author = models.ForeignKey('Author', verbose_name='文章作者', on_delete=models.CASCADE)

    def __str__(self):
        return self.name

    class Meta:
        verbose_name = '文章'
        verbose_name_plural = verbose_name

模型设计的基本要求

  • 每个字段加上友好的 verbose_name ,一般是中文名
  • 定义 __str__ ,便于在管理后台中表示这个模型的对象
  • 定义 Meta 元类,给模型加上一个更友好的名称(一般是中文名)

运行代码自动生成

运行命令:

python manage.py generate_code [app_label] [verbose_name]

参数说明:

  • app_label: App名称,之前运行 django-admin 命令创建的App名称
  • verbose_name: 和模型的 verbose_name 类似,App的友好名称,一般是其中文名

注意:运行自动代码生成会覆盖已有的业务代码!

自动代码生成会创建(覆盖)以下文件:

  • __init__.py
  • apps.py
  • serializers.py
  • urls.py
  • viewsets.py

添加路由

代码生成器会生成你需要的所有代码,之后在config/urls.py文件中添加路由:

urlpatterns = [
    path(f'core/', include('apps.core.urls')),
    # 需要根据你的App名称添加这一行路由
    path(app_label/', include('apps.app_label.urls')),
    # ...
]