django博客开发中遇到的一些小功能
带有置顶功能的分页器
直接查询出所有文章的QuerySet然后按添加时间倒序排序,直接进入分页器。这样会没有置顶功能。
- 事先过滤出is_commend置顶文章,把器添加时间置为2099年,之后按时间倒序排序。但是这样前段显示时间又成了问题。试了联合查询也未能实现。
- 我直接增加了一个更新时间字段,把置顶文章显示它的更新时间。
- 解决不完美,待后期完善。
simpleui
快速定制django后台
-
安装
pip install django-simpleui
-
使用
# settings.py中注册simpleui INSTALLED_APPS = [ 'simpleui', # 必须在第一个 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'blog', 'mdeditor', ]
执行 makemigrations
migrate
-
访问后台即可看到效果
mdeditor
后台输入框为富文本编辑器
-
安装
pip install django-mdeditor
-
使用
settings.py中注册simpleui
# settings.py中注册mdeditor INSTALLED_APPS = [ 'simpleui', # 必须在第一个 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'blog', 'mdeditor', ]
models.py中导入
from mdeditor.fields import MDTextField
表中子段
content = MDTextField(verbose_name='文章内容') # 富文本编辑框,要在models中注册mdeditor
-
访问即可
mistune
前段渲染Markdown文本编辑器
-
安装
pip install mistune
-
使用
view.py中模板渲染
class ArticleView(View): def get(self, request, article_id=None): article = models.Article.objects.get(pk=article_id) article.viewed() # 增加阅读数 mk = mistune.Markdown() output = mk(article.content) # 文章分类 categories = models.Category.objects.all() return render(request, 'datail.html', { 'article': article, 'detail_html': output, 'categories': categories,})