Django实战:choices字段定义与富文本编辑器集成指南
本文详细讲解在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选项和富文本编辑器的完整使用教程,希望能为读者提供有价值的参考。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









