Django实战:choices字段定义与富文本编辑器集成指南

清欢
清欢
发布时间:2026-10-13| 5人浏览过
原创

本文详细讲解在Django项目中配置MySQL数据库、定义模型类中的choices选项以限制字段取值,以及集成Tinymce富文本编辑器实现商品详情编辑的全过程。涵盖从数据库创建、模型迁移、后台管理配置到路由设置的完整步骤,帮助开发者快速掌握Django表单与内容管理的核心技巧。

项目初始化与数据库配置

项目准备

首先,需要创建用于存储数据的数据库。

执行以下SQL语句创建名为choices_test的数据库,并指定默认字符集为utf8:

接下来,在终端中创建一个名为choices_test的Django项目。

在项目目录下,创建一个名为app01的应用模块。

完成上述步骤后,项目的目录结构应如下所示:

随后,需要在Django的配置文件中设置数据库连接信息。


DATABASES = {
 'default': {
 'ENGINE': 'django.db.backends.mysql',
 'NAME': 'choices_test',
 'USER': 'root',
 'PASSWORD': 'root',
 'HOST': 'localhost',
 'PORT': '3306',
 }
}

在项目的主配置目录中,找到__init__.py文件进行数据库驱动的配置。

在该文件中导入pymysql库:

并执行以下代码,将pymysql注册为MySQLdb的替代品,以解决Django对MySQL驱动的兼容性问题:

Django模型中choices选项的配置

choices选项的使用

在Django的模型类中,可以通过choices参数来限制字段的可选项。

首先,编写Goods模型类的代码。


from django.db import models

class Goods(models.Model):
 STATUS_CHOICES = (
 (0, '下架'),
 (1, '上架'),
 )
 ststus = models.SmallIntegerField(choices=STATUS_CHOICES, default=1, verbose_name="商品上架下架")

 class Meta:
 db_table = "goods" # 指定创建表名使表名为goods
 verbose_name = "商品"
 verbose_name_plural = verbose_name # 和上面一句结合使用,在后台管理时显示表名为"商品"

这里需要特别注意verbose_name属性的作用。

verbose_name用于指定在Django Admin后台中显示的名称,默认情况下,Django会在该名称后自动添加's'以表示复数形式。

若希望后台显示名称保持单数形式,需显式设置verbose_name_plural等于verbose_name。

接下来,在admin.py文件中注册Goods模型类,以便在后台管理中可见。


from django.contrib import admin
from app01.models import Goods
admin.site.register(Goods)

完成模型定义后,执行数据表迁移操作。

首先运行以下命令生成迁移文件:

然后执行以下命令将迁移应用到数据库:

为了使后台管理界面符合中文环境,需进行相关配置。

在settings.py中配置语言和时区。

设置语言代码为简体中文:

设置时区为上海时间:

创建超级管理员账号以便登录后台。


python manage.py createsuperuser
user:admin
password:admin123

启动Django开发服务器。

使用创建的超级管理员账号登录后台管理系统。

登录成功后,将看到如下界面:

以下是choices选项在后台管理中的实际效果展示。

集成Tinymce富文本编辑器

富文本编辑器

在Django中集成富文本编辑器,首先需要做好准备工作。

第一步,通过pip安装编辑器所需的依赖包。

执行以下命令安装django-tinymce:

第二步,在INSTALLED_APPS中注册tinymce应用。


INSTALLED_APPS = [
 'tinymce',
]

第三步,在settings.py文件中添加tinymce的具体配置参数。


# 编辑器相关配置
TINYMCE_DEFAULT_CONFIG = {
 'theme': 'advanced',
 'width': 600,
 'height': 400,
}

第四步,配置tinymce的路由映射。


from django.conf.urls import url, include

urlpatterns = [
 url(r'^tinymce/', include('tinymce.urls')),
]

在模型类中使用富文本编辑器。

首先,修改模型类代码以引入HTMLField。


from tinymce.models import HTMLField


class Goods(models.Model):
 """商品测试模型类"""
 STATUS_CHOICES = (
 (0, '下架'),
 (1, '上架'),
 )
 ststus = models.SmallIntegerField(choices=STATUS_CHOICES, default=1, verbose_name="商品上架下架")
 # null=True 允许数据库为空,blank=True 允许后台输入时为空
 detail = HTMLField(null=True, blank=True, verbose_name="商品详情")

 class Meta:
 db_table = "goods" # 指定创建表名使表名为goods
 verbose_name = "商品"
 verbose_name_plural = verbose_name # 和上面一句结合使用,在后台管理时显示表名为"商品"

修改模型后,再次执行数据表迁移。

生成新的迁移文件:

应用迁移到数据库:

进入后台管理界面,尝试添加新的商品记录。

此时,在后台管理页面中可以看到如下效果:

这表明富文本编辑器已在后台成功集成并可用。

以上就是Django中choices选项和富文本编辑器的完整使用教程,希望能为读者提供有价值的参考。

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。