From 3d29569c221ea63e5d9ce61fe8648d9112266b1b273782f0d64170bf56f68ef7 Mon Sep 17 00:00:00 2001 From: yuangyaa Date: Sun, 27 Jul 2025 18:43:48 +0800 Subject: [PATCH 1/5] change title with time --- myblog/blog/models.py | 6 +++--- myblog/blog/templates/blog/detail.html | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/myblog/blog/models.py b/myblog/blog/models.py index 9ed7e18..02be824 100644 --- a/myblog/blog/models.py +++ b/myblog/blog/models.py @@ -14,7 +14,7 @@ class Post(models.Model): publish_date = models.DateTimeField(default=timezone.now) def __str__(self): - return f"{self.title} ({self.publish_date.strftime('%Y-%m-%d')})" + return f"{self.title}" def get_markdown_content(self): import re @@ -63,8 +63,8 @@ class Post(models.Model): # 先转换markdown到HTML html_content = markdown.markdown(content) - + # 将emoji shortcode转换为实际的emoji字符 html_content = emoji.emojize(html_content, language='alias') - + return mark_safe(html_content) diff --git a/myblog/blog/templates/blog/detail.html b/myblog/blog/templates/blog/detail.html index 53bfdce..c0cfd76 100644 --- a/myblog/blog/templates/blog/detail.html +++ b/myblog/blog/templates/blog/detail.html @@ -24,7 +24,7 @@ display: block; margin: 10px 0; } - + .post-content pre { background-color: #f4f4f4; border: 1px solid #ddd; @@ -33,7 +33,7 @@ overflow-x: auto; margin: 10px 0; } - + .post-content code { font-family: 'Courier New', Courier, monospace; background-color: #f4f4f4; @@ -41,7 +41,7 @@ border-radius: 3px; font-size: 0.9em; } - + .post-content pre code { background-color: transparent; padding: 0; From dca4f7a1d0587e07fc63d1066418feed8f1f54fb570ab11e12ce45e41e9d3180 Mon Sep 17 00:00:00 2001 From: yuangyaa Date: Sun, 27 Jul 2025 20:40:01 +0800 Subject: [PATCH 2/5] apart settings.py && add local_settings.py --- myblog/myblog/settings.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/myblog/myblog/settings.py b/myblog/myblog/settings.py index 4bae7aa..1866ed6 100644 --- a/myblog/myblog/settings.py +++ b/myblog/myblog/settings.py @@ -11,6 +11,7 @@ https://docs.djangoproject.com/en/5.2/ref/settings/ """ from pathlib import Path +import os # Build paths inside the project like this: BASE_DIR / 'subdir'. BASE_DIR = Path(__file__).resolve().parent.parent @@ -112,7 +113,6 @@ USE_TZ = True STATIC_URL = 'static/' # 添加媒体文件配置 -import os MEDIA_URL = '/media/' MEDIA_ROOT = os.path.join(BASE_DIR, 'media') @@ -157,3 +157,10 @@ MDEDITOR_CONFIGS = { } X_FRAME_OPTIONS = 'SAMEORIGIN' + +# settings.py 末尾加上这段 +try: + from .local_settings import * +except ImportError: + pass + From c8970dc447399904244f0d3c234285e5a811531ece6e348485c0189c1f0bfd34 Mon Sep 17 00:00:00 2001 From: yuangyaa Date: Sun, 27 Jul 2025 22:21:29 +0800 Subject: [PATCH 3/5] Add Category && Change webview theme --- myblog/blog/admin.py | 3 +- myblog/blog/migrations/0006_category.py | 25 ++ myblog/blog/migrations/0007_post_category.py | 19 ++ myblog/blog/models.py | 17 +- myblog/blog/templates/blog/detail.html | 238 +++++++++++++++---- myblog/blog/templates/blog/index.html | 204 +++++++++++++++- myblog/blog/views.py | 50 +++- 7 files changed, 489 insertions(+), 67 deletions(-) create mode 100644 myblog/blog/migrations/0006_category.py create mode 100644 myblog/blog/migrations/0007_post_category.py diff --git a/myblog/blog/admin.py b/myblog/blog/admin.py index 6bf1c84..b5e8f60 100644 --- a/myblog/blog/admin.py +++ b/myblog/blog/admin.py @@ -1,5 +1,5 @@ from django.contrib import admin -from .models import Post +from .models import Post, Category from django.db import models from mdeditor.widgets import MDEditorWidget @@ -18,3 +18,4 @@ class PostAdmin(admin.ModelAdmin): # 注册自定义的PostAdmin admin.site.register(Post, PostAdmin) +admin.site.register(Category) \ No newline at end of file diff --git a/myblog/blog/migrations/0006_category.py b/myblog/blog/migrations/0006_category.py new file mode 100644 index 0000000..b7b4216 --- /dev/null +++ b/myblog/blog/migrations/0006_category.py @@ -0,0 +1,25 @@ +# Generated by Django 5.1 on 2025-07-27 13:26 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('blog', '0005_remove_post_image'), + ] + + operations = [ + migrations.CreateModel( + name='Category', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=100, unique=True)), + ('description', models.TextField(blank=True, null=True)), + ('created_at', models.DateTimeField(auto_now_add=True)), + ], + options={ + 'verbose_name_plural': 'Categories', + }, + ), + ] diff --git a/myblog/blog/migrations/0007_post_category.py b/myblog/blog/migrations/0007_post_category.py new file mode 100644 index 0000000..4c236ff --- /dev/null +++ b/myblog/blog/migrations/0007_post_category.py @@ -0,0 +1,19 @@ +# Generated by Django 5.1 on 2025-07-27 13:32 + +import django.db.models.deletion +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('blog', '0006_category'), + ] + + operations = [ + migrations.AddField( + model_name='post', + name='category', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='posts', to='blog.category'), + ), + ] diff --git a/myblog/blog/models.py b/myblog/blog/models.py index 02be824..88ba4de 100644 --- a/myblog/blog/models.py +++ b/myblog/blog/models.py @@ -6,12 +6,27 @@ from django.utils.safestring import mark_safe from mdeditor.fields import MDTextField +# 添加 Category 模型 +class Category(models.Model): + name = models.CharField(max_length=100, unique=True) + description = models.TextField(blank=True, null=True) + created_at = models.DateTimeField(auto_now_add=True) + + def __str__(self): + return self.name + + class Meta: + verbose_name_plural = "Categories" + + class Post(models.Model): title = models.CharField(max_length=100) content = MDTextField() # ✅ 改成这里 created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(auto_now=True) publish_date = models.DateTimeField(default=timezone.now) + # 添加分类字段,建立外键关系 + category = models.ForeignKey(Category, on_delete=models.SET_NULL, null=True, blank=True, related_name='posts') def __str__(self): return f"{self.title}" @@ -67,4 +82,4 @@ class Post(models.Model): # 将emoji shortcode转换为实际的emoji字符 html_content = emoji.emojize(html_content, language='alias') - return mark_safe(html_content) + return mark_safe(html_content) \ No newline at end of file diff --git a/myblog/blog/templates/blog/detail.html b/myblog/blog/templates/blog/detail.html index c0cfd76..aa2796b 100644 --- a/myblog/blog/templates/blog/detail.html +++ b/myblog/blog/templates/blog/detail.html @@ -3,59 +3,199 @@ {{ post.title }} + - -
- + +

六桂流芳的com

-

{{ post.title }}

- -
-

发布时间:{{ post.publish_date|date:"Y年n月j日 H:i" }}

- 返回首页 -
- -
- -
{{ post.get_markdown_content }}
-
-
-