From 24c9c96e2ff44b5ac6bafbcc2b8ae45306f84530 Mon Sep 17 00:00:00 2001 From: NJ <2076721928@qq.com> Date: Mon, 6 Oct 2025 16:43:24 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BF=AE=E6=94=B9=E9=A1=B5=E9=9D=A2?= =?UTF-8?q?=E6=A0=B7=E5=BC=8F=E5=8F=8A=E6=B5=8B=E8=AF=95=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/.gitignore | 8 + .idea/djangoBlog.iml | 34 + .idea/inspectionProfiles/Project_Default.xml | 37 + .../inspectionProfiles/profiles_settings.xml | 6 + .idea/misc.xml | 7 + .idea/modules.xml | 8 + .idea/vcs.xml | 6 + src/sql/djangoblog20251006.sql | 703 ++++++++++++++++++ src/templates/blog/article_detail.html | 68 +- src/templates/blog/article_index.html | 37 +- src/templates/share_layout/base.html | 162 ++-- src/templates/share_layout/footer.html | 58 +- src/templates/share_layout/nav.html | 44 +- 13 files changed, 961 insertions(+), 217 deletions(-) create mode 100644 .idea/.gitignore create mode 100644 .idea/djangoBlog.iml create mode 100644 .idea/inspectionProfiles/Project_Default.xml create mode 100644 .idea/inspectionProfiles/profiles_settings.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/vcs.xml create mode 100644 src/sql/djangoblog20251006.sql diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..35410ca --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,8 @@ +# 默认忽略的文件 +/shelf/ +/workspace.xml +# 基于编辑器的 HTTP 客户端请求 +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/.idea/djangoBlog.iml b/.idea/djangoBlog.iml new file mode 100644 index 0000000..fcf40c7 --- /dev/null +++ b/.idea/djangoBlog.iml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 0000000..d3144c8 --- /dev/null +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,37 @@ + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml new file mode 100644 index 0000000..105ce2d --- /dev/null +++ b/.idea/inspectionProfiles/profiles_settings.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..1b8a403 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,7 @@ + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..ebbd2c7 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/sql/djangoblog20251006.sql b/src/sql/djangoblog20251006.sql new file mode 100644 index 0000000..630a9f1 --- /dev/null +++ b/src/sql/djangoblog20251006.sql @@ -0,0 +1,703 @@ +/* + Navicat Premium Data Transfer + + Source Server : localhost_3306 + Source Server Type : MySQL + Source Server Version : 80012 (8.0.12) + Source Host : localhost:3306 + Source Schema : djangoblog + + Target Server Type : MySQL + Target Server Version : 80012 (8.0.12) + File Encoding : 65001 + + Date: 06/10/2025 16:31:34 +*/ + +SET NAMES utf8mb4; +SET FOREIGN_KEY_CHECKS = 0; + +-- ---------------------------- +-- Table structure for accounts_bloguser +-- ---------------------------- +DROP TABLE IF EXISTS `accounts_bloguser`; +CREATE TABLE `accounts_bloguser` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `password` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `last_login` datetime(6) NULL DEFAULT NULL, + `is_superuser` tinyint(1) NOT NULL, + `username` varchar(150) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `first_name` varchar(150) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `last_name` varchar(150) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `email` varchar(254) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `is_staff` tinyint(1) NOT NULL, + `is_active` tinyint(1) NOT NULL, + `date_joined` datetime(6) NOT NULL, + `nickname` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `source` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `creation_time` datetime(6) NOT NULL, + `last_modify_time` datetime(6) NOT NULL, + PRIMARY KEY (`id`) USING BTREE, + UNIQUE INDEX `username`(`username`) USING BTREE +) ENGINE = MyISAM AUTO_INCREMENT = 3 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of accounts_bloguser +-- ---------------------------- +INSERT INTO `accounts_bloguser` VALUES (1, 'pbkdf2_sha256$1000000$3kPtwC1rzKfdxAdVzy2lQ0$uuacWZgCrLjG7PhxUdIUXgVkXbUUw4Y9oS+NuAlvF+c=', '2025-10-06 15:18:37.640743', 1, 'nj140', '', '', '123@abc.com', 1, 1, '2025-09-10 20:21:37.484432', '', '', '2025-09-10 20:21:37.484432', '2025-09-10 20:21:37.484432'); +INSERT INTO `accounts_bloguser` VALUES (2, 'pbkdf2_sha256$1000000$xuZYOJn74XQWCEy8PpEw41$AVgECQISFv7Fo4/DDrb8EXS4zQnN4bdTxAnDWNbuTYU=', NULL, 0, '测试用户', '', '', 'test@test.com', 0, 1, '2025-09-10 20:22:52.608486', '', '', '2025-09-10 20:22:52.608486', '2025-09-10 20:22:52.608486'); + +-- ---------------------------- +-- Table structure for accounts_bloguser_groups +-- ---------------------------- +DROP TABLE IF EXISTS `accounts_bloguser_groups`; +CREATE TABLE `accounts_bloguser_groups` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `bloguser_id` bigint(20) NOT NULL, + `group_id` int(11) NOT NULL, + PRIMARY KEY (`id`) USING BTREE, + UNIQUE INDEX `accounts_bloguser_groups_bloguser_id_group_id_fc37e89b_uniq`(`bloguser_id`, `group_id`) USING BTREE, + INDEX `accounts_bloguser_groups_bloguser_id_a16ccbb7`(`bloguser_id`) USING BTREE, + INDEX `accounts_bloguser_groups_group_id_98d76804`(`group_id`) USING BTREE +) ENGINE = MyISAM AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Fixed; + +-- ---------------------------- +-- Records of accounts_bloguser_groups +-- ---------------------------- + +-- ---------------------------- +-- Table structure for accounts_bloguser_user_permissions +-- ---------------------------- +DROP TABLE IF EXISTS `accounts_bloguser_user_permissions`; +CREATE TABLE `accounts_bloguser_user_permissions` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `bloguser_id` bigint(20) NOT NULL, + `permission_id` int(11) NOT NULL, + PRIMARY KEY (`id`) USING BTREE, + UNIQUE INDEX `accounts_bloguser_user_p_bloguser_id_permission_i_14808777_uniq`(`bloguser_id`, `permission_id`) USING BTREE, + INDEX `accounts_bloguser_user_permissions_bloguser_id_7e1b5742`(`bloguser_id`) USING BTREE, + INDEX `accounts_bloguser_user_permissions_permission_id_ae5159b9`(`permission_id`) USING BTREE +) ENGINE = MyISAM AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Fixed; + +-- ---------------------------- +-- Records of accounts_bloguser_user_permissions +-- ---------------------------- + +-- ---------------------------- +-- Table structure for auth_group +-- ---------------------------- +DROP TABLE IF EXISTS `auth_group`; +CREATE TABLE `auth_group` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `name` varchar(150) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + PRIMARY KEY (`id`) USING BTREE, + UNIQUE INDEX `name`(`name`) USING BTREE +) ENGINE = MyISAM AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of auth_group +-- ---------------------------- + +-- ---------------------------- +-- Table structure for auth_group_permissions +-- ---------------------------- +DROP TABLE IF EXISTS `auth_group_permissions`; +CREATE TABLE `auth_group_permissions` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `group_id` int(11) NOT NULL, + `permission_id` int(11) NOT NULL, + PRIMARY KEY (`id`) USING BTREE, + UNIQUE INDEX `auth_group_permissions_group_id_permission_id_0cd325b0_uniq`(`group_id`, `permission_id`) USING BTREE, + INDEX `auth_group_permissions_group_id_b120cbf9`(`group_id`) USING BTREE, + INDEX `auth_group_permissions_permission_id_84c5c92e`(`permission_id`) USING BTREE +) ENGINE = MyISAM AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Fixed; + +-- ---------------------------- +-- Records of auth_group_permissions +-- ---------------------------- + +-- ---------------------------- +-- Table structure for auth_permission +-- ---------------------------- +DROP TABLE IF EXISTS `auth_permission`; +CREATE TABLE `auth_permission` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `content_type_id` int(11) NOT NULL, + `codename` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + PRIMARY KEY (`id`) USING BTREE, + UNIQUE INDEX `auth_permission_content_type_id_codename_01ab375a_uniq`(`content_type_id`, `codename`) USING BTREE, + INDEX `auth_permission_content_type_id_2f476e4b`(`content_type_id`) USING BTREE +) ENGINE = MyISAM AUTO_INCREMENT = 77 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of auth_permission +-- ---------------------------- +INSERT INTO `auth_permission` VALUES (1, 'Can add log entry', 1, 'add_logentry'); +INSERT INTO `auth_permission` VALUES (2, 'Can change log entry', 1, 'change_logentry'); +INSERT INTO `auth_permission` VALUES (3, 'Can delete log entry', 1, 'delete_logentry'); +INSERT INTO `auth_permission` VALUES (4, 'Can view log entry', 1, 'view_logentry'); +INSERT INTO `auth_permission` VALUES (5, 'Can add permission', 2, 'add_permission'); +INSERT INTO `auth_permission` VALUES (6, 'Can change permission', 2, 'change_permission'); +INSERT INTO `auth_permission` VALUES (7, 'Can delete permission', 2, 'delete_permission'); +INSERT INTO `auth_permission` VALUES (8, 'Can view permission', 2, 'view_permission'); +INSERT INTO `auth_permission` VALUES (9, 'Can add group', 3, 'add_group'); +INSERT INTO `auth_permission` VALUES (10, 'Can change group', 3, 'change_group'); +INSERT INTO `auth_permission` VALUES (11, 'Can delete group', 3, 'delete_group'); +INSERT INTO `auth_permission` VALUES (12, 'Can view group', 3, 'view_group'); +INSERT INTO `auth_permission` VALUES (13, 'Can add content type', 4, 'add_contenttype'); +INSERT INTO `auth_permission` VALUES (14, 'Can change content type', 4, 'change_contenttype'); +INSERT INTO `auth_permission` VALUES (15, 'Can delete content type', 4, 'delete_contenttype'); +INSERT INTO `auth_permission` VALUES (16, 'Can view content type', 4, 'view_contenttype'); +INSERT INTO `auth_permission` VALUES (17, 'Can add session', 5, 'add_session'); +INSERT INTO `auth_permission` VALUES (18, 'Can change session', 5, 'change_session'); +INSERT INTO `auth_permission` VALUES (19, 'Can delete session', 5, 'delete_session'); +INSERT INTO `auth_permission` VALUES (20, 'Can view session', 5, 'view_session'); +INSERT INTO `auth_permission` VALUES (21, 'Can add site', 6, 'add_site'); +INSERT INTO `auth_permission` VALUES (22, 'Can change site', 6, 'change_site'); +INSERT INTO `auth_permission` VALUES (23, 'Can delete site', 6, 'delete_site'); +INSERT INTO `auth_permission` VALUES (24, 'Can view site', 6, 'view_site'); +INSERT INTO `auth_permission` VALUES (25, 'Can add Website configuration', 7, 'add_blogsettings'); +INSERT INTO `auth_permission` VALUES (26, 'Can change Website configuration', 7, 'change_blogsettings'); +INSERT INTO `auth_permission` VALUES (27, 'Can delete Website configuration', 7, 'delete_blogsettings'); +INSERT INTO `auth_permission` VALUES (28, 'Can view Website configuration', 7, 'view_blogsettings'); +INSERT INTO `auth_permission` VALUES (29, 'Can add link', 8, 'add_links'); +INSERT INTO `auth_permission` VALUES (30, 'Can change link', 8, 'change_links'); +INSERT INTO `auth_permission` VALUES (31, 'Can delete link', 8, 'delete_links'); +INSERT INTO `auth_permission` VALUES (32, 'Can view link', 8, 'view_links'); +INSERT INTO `auth_permission` VALUES (33, 'Can add sidebar', 9, 'add_sidebar'); +INSERT INTO `auth_permission` VALUES (34, 'Can change sidebar', 9, 'change_sidebar'); +INSERT INTO `auth_permission` VALUES (35, 'Can delete sidebar', 9, 'delete_sidebar'); +INSERT INTO `auth_permission` VALUES (36, 'Can view sidebar', 9, 'view_sidebar'); +INSERT INTO `auth_permission` VALUES (37, 'Can add tag', 10, 'add_tag'); +INSERT INTO `auth_permission` VALUES (38, 'Can change tag', 10, 'change_tag'); +INSERT INTO `auth_permission` VALUES (39, 'Can delete tag', 10, 'delete_tag'); +INSERT INTO `auth_permission` VALUES (40, 'Can view tag', 10, 'view_tag'); +INSERT INTO `auth_permission` VALUES (41, 'Can add category', 11, 'add_category'); +INSERT INTO `auth_permission` VALUES (42, 'Can change category', 11, 'change_category'); +INSERT INTO `auth_permission` VALUES (43, 'Can delete category', 11, 'delete_category'); +INSERT INTO `auth_permission` VALUES (44, 'Can view category', 11, 'view_category'); +INSERT INTO `auth_permission` VALUES (45, 'Can add article', 12, 'add_article'); +INSERT INTO `auth_permission` VALUES (46, 'Can change article', 12, 'change_article'); +INSERT INTO `auth_permission` VALUES (47, 'Can delete article', 12, 'delete_article'); +INSERT INTO `auth_permission` VALUES (48, 'Can view article', 12, 'view_article'); +INSERT INTO `auth_permission` VALUES (49, 'Can add user', 13, 'add_bloguser'); +INSERT INTO `auth_permission` VALUES (50, 'Can change user', 13, 'change_bloguser'); +INSERT INTO `auth_permission` VALUES (51, 'Can delete user', 13, 'delete_bloguser'); +INSERT INTO `auth_permission` VALUES (52, 'Can view user', 13, 'view_bloguser'); +INSERT INTO `auth_permission` VALUES (53, 'Can add comment', 14, 'add_comment'); +INSERT INTO `auth_permission` VALUES (54, 'Can change comment', 14, 'change_comment'); +INSERT INTO `auth_permission` VALUES (55, 'Can delete comment', 14, 'delete_comment'); +INSERT INTO `auth_permission` VALUES (56, 'Can view comment', 14, 'view_comment'); +INSERT INTO `auth_permission` VALUES (57, 'Can add oauth配置', 15, 'add_oauthconfig'); +INSERT INTO `auth_permission` VALUES (58, 'Can change oauth配置', 15, 'change_oauthconfig'); +INSERT INTO `auth_permission` VALUES (59, 'Can delete oauth配置', 15, 'delete_oauthconfig'); +INSERT INTO `auth_permission` VALUES (60, 'Can view oauth配置', 15, 'view_oauthconfig'); +INSERT INTO `auth_permission` VALUES (61, 'Can add oauth user', 16, 'add_oauthuser'); +INSERT INTO `auth_permission` VALUES (62, 'Can change oauth user', 16, 'change_oauthuser'); +INSERT INTO `auth_permission` VALUES (63, 'Can delete oauth user', 16, 'delete_oauthuser'); +INSERT INTO `auth_permission` VALUES (64, 'Can view oauth user', 16, 'view_oauthuser'); +INSERT INTO `auth_permission` VALUES (65, 'Can add 命令', 17, 'add_commands'); +INSERT INTO `auth_permission` VALUES (66, 'Can change 命令', 17, 'change_commands'); +INSERT INTO `auth_permission` VALUES (67, 'Can delete 命令', 17, 'delete_commands'); +INSERT INTO `auth_permission` VALUES (68, 'Can view 命令', 17, 'view_commands'); +INSERT INTO `auth_permission` VALUES (69, 'Can add 邮件发送log', 18, 'add_emailsendlog'); +INSERT INTO `auth_permission` VALUES (70, 'Can change 邮件发送log', 18, 'change_emailsendlog'); +INSERT INTO `auth_permission` VALUES (71, 'Can delete 邮件发送log', 18, 'delete_emailsendlog'); +INSERT INTO `auth_permission` VALUES (72, 'Can view 邮件发送log', 18, 'view_emailsendlog'); +INSERT INTO `auth_permission` VALUES (73, 'Can add OwnTrackLogs', 19, 'add_owntracklog'); +INSERT INTO `auth_permission` VALUES (74, 'Can change OwnTrackLogs', 19, 'change_owntracklog'); +INSERT INTO `auth_permission` VALUES (75, 'Can delete OwnTrackLogs', 19, 'delete_owntracklog'); +INSERT INTO `auth_permission` VALUES (76, 'Can view OwnTrackLogs', 19, 'view_owntracklog'); + +-- ---------------------------- +-- Table structure for blog_article +-- ---------------------------- +DROP TABLE IF EXISTS `blog_article`; +CREATE TABLE `blog_article` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `title` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `body` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `pub_time` datetime(6) NOT NULL, + `status` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `comment_status` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `type` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `views` int(10) UNSIGNED NOT NULL, + `article_order` int(11) NOT NULL, + `show_toc` tinyint(1) NOT NULL, + `author_id` bigint(20) NOT NULL, + `category_id` int(11) NOT NULL, + `creation_time` datetime(6) NOT NULL, + `last_modify_time` datetime(6) NOT NULL, + PRIMARY KEY (`id`) USING BTREE, + UNIQUE INDEX `title`(`title`) USING BTREE, + INDEX `blog_article_author_id_905add38`(`author_id`) USING BTREE, + INDEX `blog_article_category_id_7e38f15e`(`category_id`) USING BTREE +) ENGINE = MyISAM AUTO_INCREMENT = 11 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of blog_article +-- ---------------------------- +INSERT INTO `blog_article` VALUES (1, '利用 Django REST Framework 快速搭建一个AI绘画的API接口', '在这篇详细的教程中,我们将一步步学习如何结合强大的Django REST Framework和AI绘画模型,构建一个高性能、可扩展的API服务。内容涵盖环境搭建、模型封装、API视图编写以及安全认证。', '2025-10-06 14:38:45.000000', 'p', 'o', 'a', 164, 0, 1, 1, 1, '2025-10-06 14:38:45.000000', '2025-10-06 14:38:45.000000'); +INSERT INTO `blog_article` VALUES (2, 'AIGC 革命:我是如何用 LangChain 连接 GPT-4 构建自动化内容生成系统的', '探索AIGC的无限可能!本文将分享一个完整的项目实战案例,介绍如何使用LangChain作为粘合剂,将大语言模型(如GPT-4)的能力与外部数据源和工具结合,实现一个强大的自动化内容创作与摘要系统。', '2025-10-06 14:38:45.000000', 'p', 'o', 'a', 235, 0, 1, 1, 3, '2025-10-06 14:38:45.000000', '2025-10-06 14:38:45.000000'); +INSERT INTO `blog_article` VALUES (3, '从零到一:Docker 化 Django 项目的保姆级教程', '容器化是现代应用部署的基石。本文将以这个Django Blog项目为例,从编写Dockerfile到使用docker-compose编排服务,手把手教你如何将一个Django应用及其依赖(如MySQL, Redis)进行Docker化,实现一键部署。', '2025-10-06 14:38:45.000000', 'p', 'o', 'a', 302, 0, 1, 1, 4, '2025-10-06 14:38:45.000000', '2025-10-06 14:38:45.000000'); +INSERT INTO `blog_article` VALUES (4, 'React Hooks 全方位解析:从 useState 到自定义 Hooks', '你真的理解React Hooks吗?本文将深入剖析Hooks的工作原理,不仅会详细讲解useState、useEffect等常用Hooks的最佳实践,还会带你编写一个实用的自定义Hook,彻底提升你的React开发水平。', '2025-10-06 14:38:45.000000', 'p', 'o', 'a', 189, 0, 1, 2, 2, '2025-10-06 14:38:45.000000', '2025-10-06 14:38:45.000000'); +INSERT INTO `blog_article` VALUES (5, '万字长文:深入浅出Kubernetes核心概念', 'Kubernetes(K8s)是云原生时代的操作系统,但其学习曲线也相对陡峭。本文旨在用最通俗易懂的语言,为你系统性地讲解Pod、Service、Deployment、StatefulSet等核心概念,为你掌握K8s打下坚实的基础。', '2025-10-06 14:38:45.000000', 'p', 'o', 'a', 512, 0, 1, 1, 4, '2025-10-06 14:38:45.000000', '2025-10-06 14:38:45.000000'); +INSERT INTO `blog_article` VALUES (6, 'MySQL索引优化艺术:从B+树到高性能SQL查询', '一个慢查询足以拖垮整个应用。本文将从MySQL索引的底层数据结构B+树讲起,深入分析如何创建高效的索引、避免索引失效的常见“坑”,并提供一套切实可行的SQL性能优化方案。', '2025-10-06 14:38:45.000000', 'p', 'o', 'a', 421, 0, 1, 1, 1, '2025-10-06 14:38:45.000000', '2025-10-06 14:38:45.000000'); +INSERT INTO `blog_article` VALUES (7, 'Vue 3 对比 React 18:2025年的前端框架之争', '前端框架选型是每个项目开始时的重要决策。本文将从性能(Composition API vs Hooks)、生态、社区支持以及开发体验等多个维度,对当今最主流的两大框架Vue 3和React 18进行一次全面的横向评测。', '2025-10-06 14:38:45.000000', 'p', 'o', 'a', 632, 0, 0, 2, 2, '2025-10-06 14:38:45.000000', '2025-10-06 14:38:45.000000'); +INSERT INTO `blog_article` VALUES (8, '实战指南:使用LoRA技术微调你自己的大语言模型', '想让大模型更懂你的业务?微调是关键。本文将提供一份详细的实战指南,教你如何使用高效的LoRA(Low-Rank Adaptation)技术,在消费级显卡上对开源大语言模型(如Llama 2)进行微调,打造专属的AI助手。', '2025-10-06 14:38:45.000000', 'p', 'o', 'a', 398, 0, 1, 1, 3, '2025-10-06 14:38:45.000000', '2025-10-06 14:38:45.000000'); +INSERT INTO `blog_article` VALUES (9, '使用 GitHub Actions 为你的 Python 项目打造一条优雅的 CI/CD 流水线', '自动化是提升软件质量和交付效率的核心。本文将通过一个真实的Python项目案例,展示如何利用GitHub Actions,实现从代码提交、自动化测试、构建Docker镜像到部署的全流程CI/CD自动化。', '2025-10-06 14:38:45.000000', 'p', 'o', 'a', 277, 0, 1, 2, 4, '2025-10-06 14:38:45.000000', '2025-10-06 14:38:45.000000'); +INSERT INTO `blog_article` VALUES (10, '技术人如何打破职业瓶颈?我的三点思考', '当工作了3-5年后,很多技术同学会感到迷茫。本文不谈具体的代码,只结合我个人的经历,分享关于技术深度、业务理解和软技能三个方面的思考,希望能帮助你找到突破职业瓶颈的方向。', '2025-10-06 14:38:45.000000', 'p', 'o', 'a', 712, 0, 0, 1, 7, '2025-10-06 14:38:45.000000', '2025-10-06 14:38:45.000000'); + +-- ---------------------------- +-- Table structure for blog_article_tags +-- ---------------------------- +DROP TABLE IF EXISTS `blog_article_tags`; +CREATE TABLE `blog_article_tags` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `article_id` int(11) NOT NULL, + `tag_id` int(11) NOT NULL, + PRIMARY KEY (`id`) USING BTREE, + UNIQUE INDEX `blog_article_tags_article_id_tag_id_b78a22e9_uniq`(`article_id`, `tag_id`) USING BTREE, + INDEX `blog_article_tags_article_id_82c02dd6`(`article_id`) USING BTREE, + INDEX `blog_article_tags_tag_id_88eb3ed9`(`tag_id`) USING BTREE +) ENGINE = MyISAM AUTO_INCREMENT = 31 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Fixed; + +-- ---------------------------- +-- Records of blog_article_tags +-- ---------------------------- +INSERT INTO `blog_article_tags` VALUES (1, 1, 1); +INSERT INTO `blog_article_tags` VALUES (2, 1, 2); +INSERT INTO `blog_article_tags` VALUES (3, 1, 3); +INSERT INTO `blog_article_tags` VALUES (4, 1, 8); +INSERT INTO `blog_article_tags` VALUES (5, 1, 10); +INSERT INTO `blog_article_tags` VALUES (6, 2, 1); +INSERT INTO `blog_article_tags` VALUES (7, 2, 3); +INSERT INTO `blog_article_tags` VALUES (8, 2, 9); +INSERT INTO `blog_article_tags` VALUES (9, 3, 1); +INSERT INTO `blog_article_tags` VALUES (10, 3, 2); +INSERT INTO `blog_article_tags` VALUES (11, 3, 4); +INSERT INTO `blog_article_tags` VALUES (12, 3, 10); +INSERT INTO `blog_article_tags` VALUES (13, 3, 12); +INSERT INTO `blog_article_tags` VALUES (14, 4, 6); +INSERT INTO `blog_article_tags` VALUES (15, 4, 10); +INSERT INTO `blog_article_tags` VALUES (16, 5, 4); +INSERT INTO `blog_article_tags` VALUES (17, 5, 5); +INSERT INTO `blog_article_tags` VALUES (18, 5, 11); +INSERT INTO `blog_article_tags` VALUES (19, 6, 13); +INSERT INTO `blog_article_tags` VALUES (20, 6, 10); +INSERT INTO `blog_article_tags` VALUES (21, 7, 6); +INSERT INTO `blog_article_tags` VALUES (22, 7, 7); +INSERT INTO `blog_article_tags` VALUES (23, 8, 1); +INSERT INTO `blog_article_tags` VALUES (24, 8, 3); +INSERT INTO `blog_article_tags` VALUES (25, 8, 9); +INSERT INTO `blog_article_tags` VALUES (26, 8, 10); +INSERT INTO `blog_article_tags` VALUES (27, 9, 1); +INSERT INTO `blog_article_tags` VALUES (28, 9, 4); +INSERT INTO `blog_article_tags` VALUES (29, 9, 10); +INSERT INTO `blog_article_tags` VALUES (30, 10, 14); + +-- ---------------------------- +-- Table structure for blog_blogsettings +-- ---------------------------- +DROP TABLE IF EXISTS `blog_blogsettings`; +CREATE TABLE `blog_blogsettings` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `site_name` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `site_description` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `site_seo_description` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `site_keywords` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `article_sub_length` int(11) NOT NULL, + `sidebar_article_count` int(11) NOT NULL, + `sidebar_comment_count` int(11) NOT NULL, + `article_comment_count` int(11) NOT NULL, + `show_google_adsense` tinyint(1) NOT NULL, + `google_adsense_codes` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL, + `open_site_comment` tinyint(1) NOT NULL, + `beian_code` varchar(2000) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, + `analytics_code` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `show_gongan_code` tinyint(1) NOT NULL, + `gongan_beiancode` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL, + `global_footer` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL, + `global_header` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL, + `comment_need_review` tinyint(1) NOT NULL, + PRIMARY KEY (`id`) USING BTREE +) ENGINE = MyISAM AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of blog_blogsettings +-- ---------------------------- +INSERT INTO `blog_blogsettings` VALUES (1, 'djangoblog', '基于Django的博客系统', '基于Django的博客系统', 'Django,Python', 300, 10, 5, 5, 0, '', 1, '', '', 0, '', '', '', 0); + +-- ---------------------------- +-- Table structure for blog_category +-- ---------------------------- +DROP TABLE IF EXISTS `blog_category`; +CREATE TABLE `blog_category` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `name` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `slug` varchar(60) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `index` int(11) NOT NULL, + `parent_category_id` int(11) NULL DEFAULT NULL, + `creation_time` datetime(6) NOT NULL, + `last_modify_time` datetime(6) NOT NULL, + PRIMARY KEY (`id`) USING BTREE, + UNIQUE INDEX `name`(`name`) USING BTREE, + INDEX `blog_category_slug_92643dc5`(`slug`) USING BTREE, + INDEX `blog_category_parent_category_id_f50c3c0c`(`parent_category_id`) USING BTREE +) ENGINE = MyISAM AUTO_INCREMENT = 8 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of blog_category +-- ---------------------------- +INSERT INTO `blog_category` VALUES (1, '后端开发', 'backend-development', 10, NULL, '2025-10-06 14:33:33.000000', '2025-10-06 14:33:33.000000'); +INSERT INTO `blog_category` VALUES (2, '前端技术', 'frontend-technology', 20, NULL, '2025-10-06 14:33:33.000000', '2025-10-06 14:33:33.000000'); +INSERT INTO `blog_category` VALUES (3, 'AI 与机器学习', 'ai-machine-learning', 30, NULL, '2025-10-06 14:33:33.000000', '2025-10-06 14:33:33.000000'); +INSERT INTO `blog_category` VALUES (4, '云原生与DevOps', 'cloud-native-devops', 40, NULL, '2025-10-06 14:33:33.000000', '2025-10-06 14:33:33.000000'); +INSERT INTO `blog_category` VALUES (5, '项目实战', 'project-showcase', 50, NULL, '2025-10-06 14:33:33.000000', '2025-10-06 14:33:33.000000'); +INSERT INTO `blog_category` VALUES (6, '技术视野', 'tech-horizon', 60, NULL, '2025-10-06 14:33:33.000000', '2025-10-06 14:33:33.000000'); +INSERT INTO `blog_category` VALUES (7, '职业发展', 'career-development', 70, NULL, '2025-10-06 14:33:33.000000', '2025-10-06 14:33:33.000000'); + +-- ---------------------------- +-- Table structure for blog_links +-- ---------------------------- +DROP TABLE IF EXISTS `blog_links`; +CREATE TABLE `blog_links` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `name` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `link` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `sequence` int(11) NOT NULL, + `is_enable` tinyint(1) NOT NULL, + `show_type` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `last_mod_time` datetime(6) NOT NULL, + `creation_time` datetime(6) NOT NULL, + PRIMARY KEY (`id`) USING BTREE, + UNIQUE INDEX `name`(`name`) USING BTREE, + UNIQUE INDEX `sequence`(`sequence`) USING BTREE +) ENGINE = MyISAM AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of blog_links +-- ---------------------------- + +-- ---------------------------- +-- Table structure for blog_sidebar +-- ---------------------------- +DROP TABLE IF EXISTS `blog_sidebar`; +CREATE TABLE `blog_sidebar` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `content` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `sequence` int(11) NOT NULL, + `is_enable` tinyint(1) NOT NULL, + `last_mod_time` datetime(6) NOT NULL, + `creation_time` datetime(6) NOT NULL, + PRIMARY KEY (`id`) USING BTREE, + UNIQUE INDEX `sequence`(`sequence`) USING BTREE +) ENGINE = MyISAM AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of blog_sidebar +-- ---------------------------- + +-- ---------------------------- +-- Table structure for blog_tag +-- ---------------------------- +DROP TABLE IF EXISTS `blog_tag`; +CREATE TABLE `blog_tag` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `name` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `slug` varchar(60) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `creation_time` datetime(6) NOT NULL, + `last_modify_time` datetime(6) NOT NULL, + PRIMARY KEY (`id`) USING BTREE, + UNIQUE INDEX `name`(`name`) USING BTREE, + INDEX `blog_tag_slug_01068d0e`(`slug`) USING BTREE +) ENGINE = MyISAM AUTO_INCREMENT = 15 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of blog_tag +-- ---------------------------- +INSERT INTO `blog_tag` VALUES (1, 'Python', 'python', '2025-10-06 14:33:33.000000', '2025-10-06 14:33:33.000000'); +INSERT INTO `blog_tag` VALUES (2, 'Django', 'django', '2025-10-06 14:33:33.000000', '2025-10-06 14:33:33.000000'); +INSERT INTO `blog_tag` VALUES (3, 'AIGC', 'aigc', '2025-10-06 14:33:33.000000', '2025-10-06 14:33:33.000000'); +INSERT INTO `blog_tag` VALUES (4, 'Docker', 'docker', '2025-10-06 14:33:33.000000', '2025-10-06 14:33:33.000000'); +INSERT INTO `blog_tag` VALUES (5, 'Kubernetes', 'kubernetes', '2025-10-06 14:33:33.000000', '2025-10-06 14:33:33.000000'); +INSERT INTO `blog_tag` VALUES (6, 'React', 'react', '2025-10-06 14:33:33.000000', '2025-10-06 14:33:33.000000'); +INSERT INTO `blog_tag` VALUES (7, 'Vue.js', 'vuejs', '2025-10-06 14:33:33.000000', '2025-10-06 14:33:33.000000'); +INSERT INTO `blog_tag` VALUES (8, 'RESTful API', 'restful-api', '2025-10-06 14:33:33.000000', '2025-10-06 14:33:33.000000'); +INSERT INTO `blog_tag` VALUES (9, 'LLM', 'llm', '2025-10-06 14:33:33.000000', '2025-10-06 14:33:33.000000'); +INSERT INTO `blog_tag` VALUES (10, '教程', 'tutorial', '2025-10-06 14:33:33.000000', '2025-10-06 14:33:33.000000'); +INSERT INTO `blog_tag` VALUES (11, '源码分析', 'source-code-analysis', '2025-10-06 14:33:33.000000', '2025-10-06 14:33:33.000000'); +INSERT INTO `blog_tag` VALUES (12, '踩坑记录', 'troubleshooting', '2025-10-06 14:33:33.000000', '2025-10-06 14:33:33.000000'); +INSERT INTO `blog_tag` VALUES (13, '性能优化', 'performance-optimization', '2025-10-06 14:33:33.000000', '2025-10-06 14:33:33.000000'); +INSERT INTO `blog_tag` VALUES (14, '面试', 'interview', '2025-10-06 14:33:33.000000', '2025-10-06 14:33:33.000000'); + +-- ---------------------------- +-- Table structure for comments_comment +-- ---------------------------- +DROP TABLE IF EXISTS `comments_comment`; +CREATE TABLE `comments_comment` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `body` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `is_enable` tinyint(1) NOT NULL, + `article_id` int(11) NOT NULL, + `author_id` bigint(20) NOT NULL, + `parent_comment_id` bigint(20) NULL DEFAULT NULL, + `creation_time` datetime(6) NOT NULL, + `last_modify_time` datetime(6) NOT NULL, + PRIMARY KEY (`id`) USING BTREE, + INDEX `comments_comment_article_id_94fe60a2`(`article_id`) USING BTREE, + INDEX `comments_comment_author_id_334ce9e2`(`author_id`) USING BTREE, + INDEX `comments_comment_parent_comment_id_71289d4a`(`parent_comment_id`) USING BTREE +) ENGINE = MyISAM AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of comments_comment +-- ---------------------------- +INSERT INTO `comments_comment` VALUES (1, '测试评论1', 1, 1, 1, NULL, '2025-10-06 16:26:04.268649', '2025-10-06 16:26:04.268649'); + +-- ---------------------------- +-- Table structure for django_admin_log +-- ---------------------------- +DROP TABLE IF EXISTS `django_admin_log`; +CREATE TABLE `django_admin_log` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `action_time` datetime(6) NOT NULL, + `object_id` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL, + `object_repr` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `action_flag` smallint(5) UNSIGNED NOT NULL, + `change_message` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `content_type_id` int(11) NULL DEFAULT NULL, + `user_id` bigint(20) NOT NULL, + PRIMARY KEY (`id`) USING BTREE, + INDEX `django_admin_log_content_type_id_c4bce8eb`(`content_type_id`) USING BTREE, + INDEX `django_admin_log_user_id_c564eba6`(`user_id`) USING BTREE +) ENGINE = MyISAM AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of django_admin_log +-- ---------------------------- + +-- ---------------------------- +-- Table structure for django_content_type +-- ---------------------------- +DROP TABLE IF EXISTS `django_content_type`; +CREATE TABLE `django_content_type` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `app_label` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `model` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + PRIMARY KEY (`id`) USING BTREE, + UNIQUE INDEX `django_content_type_app_label_model_76bd3d3b_uniq`(`app_label`, `model`) USING BTREE +) ENGINE = MyISAM AUTO_INCREMENT = 20 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of django_content_type +-- ---------------------------- +INSERT INTO `django_content_type` VALUES (1, 'admin', 'logentry'); +INSERT INTO `django_content_type` VALUES (2, 'auth', 'permission'); +INSERT INTO `django_content_type` VALUES (3, 'auth', 'group'); +INSERT INTO `django_content_type` VALUES (4, 'contenttypes', 'contenttype'); +INSERT INTO `django_content_type` VALUES (5, 'sessions', 'session'); +INSERT INTO `django_content_type` VALUES (6, 'sites', 'site'); +INSERT INTO `django_content_type` VALUES (7, 'blog', 'blogsettings'); +INSERT INTO `django_content_type` VALUES (8, 'blog', 'links'); +INSERT INTO `django_content_type` VALUES (9, 'blog', 'sidebar'); +INSERT INTO `django_content_type` VALUES (10, 'blog', 'tag'); +INSERT INTO `django_content_type` VALUES (11, 'blog', 'category'); +INSERT INTO `django_content_type` VALUES (12, 'blog', 'article'); +INSERT INTO `django_content_type` VALUES (13, 'accounts', 'bloguser'); +INSERT INTO `django_content_type` VALUES (14, 'comments', 'comment'); +INSERT INTO `django_content_type` VALUES (15, 'oauth', 'oauthconfig'); +INSERT INTO `django_content_type` VALUES (16, 'oauth', 'oauthuser'); +INSERT INTO `django_content_type` VALUES (17, 'servermanager', 'commands'); +INSERT INTO `django_content_type` VALUES (18, 'servermanager', 'emailsendlog'); +INSERT INTO `django_content_type` VALUES (19, 'owntracks', 'owntracklog'); + +-- ---------------------------- +-- Table structure for django_migrations +-- ---------------------------- +DROP TABLE IF EXISTS `django_migrations`; +CREATE TABLE `django_migrations` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `app` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `applied` datetime(6) NOT NULL, + PRIMARY KEY (`id`) USING BTREE +) ENGINE = MyISAM AUTO_INCREMENT = 39 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of django_migrations +-- ---------------------------- +INSERT INTO `django_migrations` VALUES (1, 'contenttypes', '0001_initial', '2025-09-10 20:20:07.085024'); +INSERT INTO `django_migrations` VALUES (2, 'contenttypes', '0002_remove_content_type_name', '2025-09-10 20:20:07.268580'); +INSERT INTO `django_migrations` VALUES (3, 'auth', '0001_initial', '2025-09-10 20:20:07.843315'); +INSERT INTO `django_migrations` VALUES (4, 'auth', '0002_alter_permission_name_max_length', '2025-09-10 20:20:07.922870'); +INSERT INTO `django_migrations` VALUES (5, 'auth', '0003_alter_user_email_max_length', '2025-09-10 20:20:07.930740'); +INSERT INTO `django_migrations` VALUES (6, 'auth', '0004_alter_user_username_opts', '2025-09-10 20:20:07.938564'); +INSERT INTO `django_migrations` VALUES (7, 'auth', '0005_alter_user_last_login_null', '2025-09-10 20:20:07.946608'); +INSERT INTO `django_migrations` VALUES (8, 'auth', '0006_require_contenttypes_0002', '2025-09-10 20:20:07.950609'); +INSERT INTO `django_migrations` VALUES (9, 'auth', '0007_alter_validators_add_error_messages', '2025-09-10 20:20:07.958108'); +INSERT INTO `django_migrations` VALUES (10, 'auth', '0008_alter_user_username_max_length', '2025-09-10 20:20:07.966887'); +INSERT INTO `django_migrations` VALUES (11, 'auth', '0009_alter_user_last_name_max_length', '2025-09-10 20:20:07.975361'); +INSERT INTO `django_migrations` VALUES (12, 'auth', '0010_alter_group_name_max_length', '2025-09-10 20:20:08.045732'); +INSERT INTO `django_migrations` VALUES (13, 'auth', '0011_update_proxy_permissions', '2025-09-10 20:20:08.060302'); +INSERT INTO `django_migrations` VALUES (14, 'auth', '0012_alter_user_first_name_max_length', '2025-09-10 20:20:08.067708'); +INSERT INTO `django_migrations` VALUES (15, 'accounts', '0001_initial', '2025-09-10 20:20:08.762715'); +INSERT INTO `django_migrations` VALUES (16, 'accounts', '0002_alter_bloguser_options_remove_bloguser_created_time_and_more', '2025-09-10 20:20:09.150861'); +INSERT INTO `django_migrations` VALUES (17, 'admin', '0001_initial', '2025-09-10 20:20:09.449364'); +INSERT INTO `django_migrations` VALUES (18, 'admin', '0002_logentry_remove_auto_add', '2025-09-10 20:20:09.461312'); +INSERT INTO `django_migrations` VALUES (19, 'admin', '0003_logentry_add_action_flag_choices', '2025-09-10 20:20:09.473800'); +INSERT INTO `django_migrations` VALUES (20, 'blog', '0001_initial', '2025-09-10 20:20:10.518659'); +INSERT INTO `django_migrations` VALUES (21, 'blog', '0002_blogsettings_global_footer_and_more', '2025-09-10 20:20:10.677950'); +INSERT INTO `django_migrations` VALUES (22, 'blog', '0003_blogsettings_comment_need_review', '2025-09-10 20:20:10.783562'); +INSERT INTO `django_migrations` VALUES (23, 'blog', '0004_rename_analyticscode_blogsettings_analytics_code_and_more', '2025-09-10 20:20:10.925352'); +INSERT INTO `django_migrations` VALUES (24, 'blog', '0005_alter_article_options_alter_category_options_and_more', '2025-09-10 20:20:12.580539'); +INSERT INTO `django_migrations` VALUES (25, 'blog', '0006_alter_blogsettings_options', '2025-09-10 20:20:12.585647'); +INSERT INTO `django_migrations` VALUES (26, 'comments', '0001_initial', '2025-09-10 20:20:13.046889'); +INSERT INTO `django_migrations` VALUES (27, 'comments', '0002_alter_comment_is_enable', '2025-09-10 20:20:13.066293'); +INSERT INTO `django_migrations` VALUES (28, 'comments', '0003_alter_comment_options_remove_comment_created_time_and_more', '2025-09-10 20:20:13.491196'); +INSERT INTO `django_migrations` VALUES (29, 'oauth', '0001_initial', '2025-09-10 20:20:13.687683'); +INSERT INTO `django_migrations` VALUES (30, 'oauth', '0002_alter_oauthconfig_options_alter_oauthuser_options_and_more', '2025-09-10 20:20:14.417907'); +INSERT INTO `django_migrations` VALUES (31, 'oauth', '0003_alter_oauthuser_nickname', '2025-09-10 20:20:14.430922'); +INSERT INTO `django_migrations` VALUES (32, 'owntracks', '0001_initial', '2025-09-10 20:20:14.459566'); +INSERT INTO `django_migrations` VALUES (33, 'owntracks', '0002_alter_owntracklog_options_and_more', '2025-09-10 20:20:14.503653'); +INSERT INTO `django_migrations` VALUES (34, 'servermanager', '0001_initial', '2025-09-10 20:20:14.537011'); +INSERT INTO `django_migrations` VALUES (35, 'servermanager', '0002_alter_emailsendlog_options_and_more', '2025-09-10 20:20:14.645874'); +INSERT INTO `django_migrations` VALUES (36, 'sessions', '0001_initial', '2025-09-10 20:20:14.731431'); +INSERT INTO `django_migrations` VALUES (37, 'sites', '0001_initial', '2025-09-10 20:20:14.756967'); +INSERT INTO `django_migrations` VALUES (38, 'sites', '0002_alter_domain_unique', '2025-09-10 20:20:14.830247'); + +-- ---------------------------- +-- Table structure for django_session +-- ---------------------------- +DROP TABLE IF EXISTS `django_session`; +CREATE TABLE `django_session` ( + `session_key` varchar(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `session_data` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `expire_date` datetime(6) NOT NULL, + PRIMARY KEY (`session_key`) USING BTREE, + INDEX `django_session_expire_date_a5c62663`(`expire_date`) USING BTREE +) ENGINE = MyISAM AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of django_session +-- ---------------------------- +INSERT INTO `django_session` VALUES ('u4mo4etzwlqd5laueuj6b06atv3b8i8n', '.eJxVjL0KwjAYAN8ls0jT_DTpKDiKk3P4ki-xwTaRpgVFfHdbUdD1jrsHMTBPnZmLH01E0hJKNr_Mgrv4tApwLs9pKts37_M5pq_d7geI_XE8LSbB4A8Zfb_7lH-7Dkq3vLjlWohGo7Kce4VaURkEdbTmCuvgqsDQWQaKNRyD0h4EtdZVKDljtOHrtPhSYk7G365xvJO2lrUUsnq-AIZTRiI:1v5fUT:CRCJlZbSR39TRBJHWUmdtH5-g92-SRMQcWal9xpEqvk', '2025-11-06 00:54:37.862680'); + +-- ---------------------------- +-- Table structure for django_site +-- ---------------------------- +DROP TABLE IF EXISTS `django_site`; +CREATE TABLE `django_site` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `domain` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + PRIMARY KEY (`id`) USING BTREE, + UNIQUE INDEX `django_site_domain_a2e37b91_uniq`(`domain`) USING BTREE +) ENGINE = MyISAM AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of django_site +-- ---------------------------- +INSERT INTO `django_site` VALUES (1, 'example.com', 'example.com'); + +-- ---------------------------- +-- Table structure for oauth_oauthconfig +-- ---------------------------- +DROP TABLE IF EXISTS `oauth_oauthconfig`; +CREATE TABLE `oauth_oauthconfig` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `type` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `appkey` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `appsecret` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `callback_url` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `is_enable` tinyint(1) NOT NULL, + `creation_time` datetime(6) NOT NULL, + `last_modify_time` datetime(6) NOT NULL, + PRIMARY KEY (`id`) USING BTREE +) ENGINE = MyISAM AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of oauth_oauthconfig +-- ---------------------------- + +-- ---------------------------- +-- Table structure for oauth_oauthuser +-- ---------------------------- +DROP TABLE IF EXISTS `oauth_oauthuser`; +CREATE TABLE `oauth_oauthuser` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `openid` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `nickname` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `token` varchar(150) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, + `picture` varchar(350) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, + `type` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `email` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, + `metadata` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL, + `author_id` bigint(20) NULL DEFAULT NULL, + `creation_time` datetime(6) NOT NULL, + `last_modify_time` datetime(6) NOT NULL, + PRIMARY KEY (`id`) USING BTREE, + INDEX `oauth_oauthuser_author_id_a975bef0`(`author_id`) USING BTREE +) ENGINE = MyISAM AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of oauth_oauthuser +-- ---------------------------- + +-- ---------------------------- +-- Table structure for owntracks_owntracklog +-- ---------------------------- +DROP TABLE IF EXISTS `owntracks_owntracklog`; +CREATE TABLE `owntracks_owntracklog` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `tid` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `lat` double NOT NULL, + `lon` double NOT NULL, + `creation_time` datetime(6) NOT NULL, + PRIMARY KEY (`id`) USING BTREE +) ENGINE = MyISAM AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of owntracks_owntracklog +-- ---------------------------- + +-- ---------------------------- +-- Table structure for servermanager_commands +-- ---------------------------- +DROP TABLE IF EXISTS `servermanager_commands`; +CREATE TABLE `servermanager_commands` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `title` varchar(300) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `command` varchar(2000) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `describe` varchar(300) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `creation_time` datetime(6) NOT NULL, + `last_modify_time` datetime(6) NOT NULL, + PRIMARY KEY (`id`) USING BTREE +) ENGINE = MyISAM AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of servermanager_commands +-- ---------------------------- + +-- ---------------------------- +-- Table structure for servermanager_emailsendlog +-- ---------------------------- +DROP TABLE IF EXISTS `servermanager_emailsendlog`; +CREATE TABLE `servermanager_emailsendlog` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `emailto` varchar(300) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `title` varchar(2000) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `content` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `send_result` tinyint(1) NOT NULL, + `creation_time` datetime(6) NOT NULL, + PRIMARY KEY (`id`) USING BTREE +) ENGINE = MyISAM AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of servermanager_emailsendlog +-- ---------------------------- +INSERT INTO `servermanager_emailsendlog` VALUES (1, '123@abc.com', '感谢你的评论', '

非常感谢您对此网站的评论

\n 您可以访问利用 Django REST Framework 快速搭建一个AI绘画的API接口\n查看您的评论,\n再次感谢您!\n
\n 如果上面的链接打不开,请复制此链接链接到您的浏览器。\nhttps://example.com/article/2025/10/6/1.html', 0, '2025-10-06 16:26:05.979770'); + +SET FOREIGN_KEY_CHECKS = 1; diff --git a/src/templates/blog/article_detail.html b/src/templates/blog/article_detail.html index a74a0db..50c5965 100644 --- a/src/templates/blog/article_detail.html +++ b/src/templates/blog/article_detail.html @@ -2,51 +2,75 @@ {% load blog_tags %} {% block header %} + + {{ article.title }} - {{ SITE_NAME }} + {% endblock %} + {% block content %} +
+ + {% load_article_detail article False user %} + {% if article.type == 'a' %} + + + {% if next_article %} + + {% endif %} + {% endif %} -
- {% if article.comment_status == "o" and OPEN_SITE_COMMENT %} +
+ + {% if article.comment_status == "o" and OPEN_SITE_COMMENT %} + +
- {% include 'comments/tags/comment_list.html' %} - {% if user.is_authenticated %} - {% include 'comments/tags/post_comment.html' %} - {% else %} -
-

您还没有登录,请您登录后发表评论。 -

+ + {% include 'comments/tags/comment_list.html' %} + + {% if user.is_authenticated %} + + {% include 'comments/tags/post_comment.html' %} + {% else %} + +

您还没有登录,请您登录后发表评论。

{% load oauth_tags %} {% load_oauth_applications request %} - -
- {% endif %} + {% endif %} +
{% endif %} - + {% endblock %} {% block sidebar %} + {% load_sidebar user "p" %} {% endblock %} \ No newline at end of file diff --git a/src/templates/blog/article_index.html b/src/templates/blog/article_index.html index 0ee6150..3a347cd 100644 --- a/src/templates/blog/article_index.html +++ b/src/templates/blog/article_index.html @@ -1,42 +1,35 @@ {% extends 'share_layout/base.html' %} {% load blog_tags %} -{% load cache %} -{% block header %} - {% if tag_name %} - {{ page_type }}:{{ tag_name }} | {{ SITE_DESCRIPTION }} - {% comment %}{% endcomment %} - {% else %} - {{ SITE_NAME }} | {{ SITE_DESCRIPTION }} - {% endif %} - - - - - - - -{% endblock %} + {% block content %} +
+ + {% if page_type and tag_name %}
- -

{{ page_type }}:{{ tag_name }}

-
+

{{ page_type }}:{{ tag_name }}

+ {% endif %} + {% for article in article_list %} {% load_article_detail article True user %} + {% empty %} +

该分类下还没有文章哦。

{% endfor %} + + {% if is_paginated %} {% load_pagination_info page_obj page_type tag_name %} - {% endif %} -
-
+ + {% endblock %} + {% block sidebar %} + {% load_sidebar user linktype %} {% endblock %} \ No newline at end of file diff --git a/src/templates/share_layout/base.html b/src/templates/share_layout/base.html index 75d0df5..d5f523f 100644 --- a/src/templates/share_layout/base.html +++ b/src/templates/share_layout/base.html @@ -1,123 +1,85 @@ {% load static %} -{% load cache %} -{% load i18n %} {% load compress %} +{% load i18n %} +{% load blog_tags %} + - - - - - + - + + {% block header %} - {% block title %}{{ SITE_NAME }}{% endblock %} - + {% block title %}{{ SITE_NAME }}{% endblock %} - {{ SITE_DESCRIPTION }} + {% endblock %} - {% load blog_tags %} + {% head_meta %} - - - - - - - + + + + + + - - + {% compress css %} + + - - - {% comment %}{% endcomment %} - + - {% block compress_css %} - {% endblock %} + + {% block compress_css %}{% endblock %} {% endcompress %} - {% if GLOBAL_HEADER %} - {{ GLOBAL_HEADER|safe }} - {% endif %} + + {% if GLOBAL_HEADER %}{{ GLOBAL_HEADER|safe }}{% endif %} - -
+ +
+ + + + +
+ {% block content %}{% endblock %} + {% block sidebar %}{% endblock %} +
- {% block content %} - {% endblock %} - - - {% block sidebar %} - {% endblock %} - - -
+ {% include 'share_layout/footer.html' %} -
+ + + +{% compress js %} + + + + {% block compress_js %}{% endblock %} +{% endcompress %} + +{% block footer %}{% endblock %} - - + \ No newline at end of file diff --git a/src/templates/share_layout/footer.html b/src/templates/share_layout/footer.html index cd86a29..e0925cd 100644 --- a/src/templates/share_layout/footer.html +++ b/src/templates/share_layout/footer.html @@ -1,56 +1,20 @@ - - + \ No newline at end of file diff --git a/src/templates/share_layout/nav.html b/src/templates/share_layout/nav.html index 24d4da6..052f09a 100644 --- a/src/templates/share_layout/nav.html +++ b/src/templates/share_layout/nav.html @@ -1,30 +1,22 @@ {% load i18n %} +{% load blog_tags %} - \ No newline at end of file + {% endfor %} + + + + \ No newline at end of file