diff --git a/myblog/blog/admin.py b/myblog/blog/admin.py index f55cc49..590a9cf 100644 --- a/myblog/blog/admin.py +++ b/myblog/blog/admin.py @@ -1,6 +1,24 @@ from django.contrib import admin from .models import Post +from django.db import models +from martor.widgets import AdminMartorWidget -# Register your models here. -admin.site.register(Post) +class PostAdmin(admin.ModelAdmin): + # 使用Martor Markdown编辑器替换默认的Textarea + formfield_overrides = { + models.TextField: {'widget': AdminMartorWidget}, + } + + # 设置列表显示字段 + list_display = ('title', 'publish_date', 'created_at') + # 设置搜索字段 + search_fields = ('title', 'content') + # 设置日期层级过滤器 + date_hierarchy = 'publish_date' + # 设置可编辑字段 + list_editable = ('publish_date',) + + +# 注册自定义的PostAdmin +admin.site.register(Post, PostAdmin) \ No newline at end of file diff --git a/myblog/blog/models.py b/myblog/blog/models.py index 40efddc..2152b74 100644 --- a/myblog/blog/models.py +++ b/myblog/blog/models.py @@ -1,5 +1,7 @@ from django.db import models from django.utils import timezone +import markdown +from django.utils.safestring import mark_safe # Create your models here. @@ -12,4 +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')})" \ No newline at end of file + return f"{self.title} ({self.publish_date.strftime('%Y-%m-%d')})" + + def get_markdown_content(self): + return mark_safe(markdown.markdown(self.content)) diff --git a/myblog/blog/templates/blog/detail.html b/myblog/blog/templates/blog/detail.html index bad1f8c..2ba4265 100644 --- a/myblog/blog/templates/blog/detail.html +++ b/myblog/blog/templates/blog/detail.html @@ -6,16 +6,16 @@ -
- -

{{ post.title }}

-

{{ post.publish_date }}

-
{{ post.content|linebreaks }}
-

← 返回首页

+
+

{{ post.title }}

+

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

+ +
{{ post.get_markdown_content|safe }}
+
+ 返回首页
- - + \ No newline at end of file diff --git a/myblog/blog/views.py b/myblog/blog/views.py index f4f942a..38b5198 100644 --- a/myblog/blog/views.py +++ b/myblog/blog/views.py @@ -5,7 +5,7 @@ from .models import Post # Create your views here. def index(request): - posts = Post.objects.order_by('-created_at') + posts = Post.objects.order_by('created_at') return render(request, 'blog/index.html', {'posts': posts}) diff --git a/myblog/myblog/settings.py b/myblog/myblog/settings.py index 1ca35d7..69a5669 100644 --- a/myblog/myblog/settings.py +++ b/myblog/myblog/settings.py @@ -35,8 +35,8 @@ INSTALLED_APPS = [ 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', - - 'blog' + 'blog', + 'martor', ] MIDDLEWARE = [ diff --git a/myblog/myblog/urls.py b/myblog/myblog/urls.py index f18aa14..160654a 100644 --- a/myblog/myblog/urls.py +++ b/myblog/myblog/urls.py @@ -17,7 +17,11 @@ Including another URLconf from django.contrib import admin from django.urls import path, include + urlpatterns = [ path('admin/', admin.site.urls), + # 添加martor的URL配置以支持Markdown编辑器 + path('martor/', include('martor.urls')), + # 包含blog应用的URL path('', include('blog.urls')), ]