update. 完成前端页面展示、列表和详情页
update. 调整融合主菜单与板块 update. 分离新闻模块
This commit is contained in:
+107
@@ -0,0 +1,107 @@
|
||||
import os
|
||||
import sys
|
||||
|
||||
import django
|
||||
from loguru import logger
|
||||
from pypinyin import lazy_pinyin, Style
|
||||
|
||||
# 配置 Django 环境
|
||||
sys.path.append(os.path.dirname(os.path.abspath(__file__)))
|
||||
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "server.settings") # 修改为你的 settings 路径
|
||||
django.setup()
|
||||
|
||||
from faker import Faker
|
||||
from base.models import MainMenu
|
||||
|
||||
# 初始化 Faker,设置中文(如果需要中文名)
|
||||
# 初始化 Faker (zh_CN 生成中文数据)
|
||||
fake = Faker('zh_CN')
|
||||
|
||||
# --- 核心数据结构:定义你的菜单层级 ---
|
||||
MENU_STRUCTURE = {
|
||||
"信息公开": [
|
||||
"通知通告", "法律法规", "政策文件", "政策解读"
|
||||
],
|
||||
"党建引领": [
|
||||
"党建工作", "党建轮播", "党风廉政", "先进典型"
|
||||
],
|
||||
"互动交流": [
|
||||
"专家访谈", "调查征集", "在线咨询"
|
||||
],
|
||||
"消防科普": [
|
||||
"数字消防", "火灾预防", "自救逃生"
|
||||
],
|
||||
"办事服务": [
|
||||
"办事指南", "政务服务", "资料下载", "办事统计"
|
||||
]
|
||||
}
|
||||
|
||||
|
||||
def get_slug(text):
|
||||
"""
|
||||
将中文转换为拼音 Slug
|
||||
例如: "信息公开" -> "xin-xi-gong-kai"
|
||||
"""
|
||||
# lazy_pinyin 返回拼音列表,join 将其用 '-' 连接
|
||||
return "-".join(lazy_pinyin(text, style=Style.NORMAL))
|
||||
|
||||
|
||||
def seed_main_menu():
|
||||
logger.info("🚀 开始生成站点导航数据...")
|
||||
|
||||
# 1. 清空旧数据 (可选,如果需要重置数据请取消注释)
|
||||
MainMenu.objects.all().delete()
|
||||
logger.info("🧹 已清空旧数据")
|
||||
|
||||
created_count = 0
|
||||
|
||||
# 2. 循环创建主菜单和子板块
|
||||
for main_title, sub_titles in MENU_STRUCTURE.items():
|
||||
# --- 创建主菜单 ---
|
||||
# 生成唯一的 code,例如 "xin-xi-gong-kai"
|
||||
main_code = get_slug(text=main_title)
|
||||
logger.info(f"主菜单: [{main_title}] Code: [{main_code}]")
|
||||
main_menu, created = MainMenu.objects.get_or_create(
|
||||
title=main_title,
|
||||
defaults={
|
||||
'code': main_code,
|
||||
'url': main_code, # 模拟 URL
|
||||
'is_external': False,
|
||||
'order': created_count,
|
||||
'visible': True
|
||||
}
|
||||
)
|
||||
|
||||
if created:
|
||||
logger.info(f"✅ 创建主菜单: [{main_title}]")
|
||||
else:
|
||||
logger.info(f"⏭️ 主菜单已存在: [{main_title}]")
|
||||
|
||||
# --- 创建子板块 ---
|
||||
for idx, sub_title in enumerate(sub_titles):
|
||||
sub_code = get_slug(text=sub_title)
|
||||
logger.info(f"子菜单: [{sub_title}] Code: [{sub_code}]")
|
||||
sub_menu, sub_created = MainMenu.objects.get_or_create(
|
||||
title=sub_title,
|
||||
parent=main_menu, # 关键:关联父级
|
||||
defaults={
|
||||
'code': sub_code,
|
||||
'url': sub_code,
|
||||
'is_external': False,
|
||||
'order': idx, # 子菜单排序
|
||||
'visible': True
|
||||
}
|
||||
)
|
||||
|
||||
if sub_created:
|
||||
logger.info(f" └─ ✅ 创建子板块: [{sub_title}]")
|
||||
else:
|
||||
logger.info(f" └─ ⏭️ 子板块已存在: [{sub_title}]")
|
||||
|
||||
created_count += 1
|
||||
|
||||
logger.info(f"\n🎉 导航数据生成完毕!共处理 {len(MENU_STRUCTURE)} 个主菜单。")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
seed_main_menu()
|
||||
Reference in New Issue
Block a user