使用Django搭建博客网站(十四)(超全超细)

 项目源码和数据库文件:链接 

接上文:上文链接
资料来自图书《Django Web应用开发实战 黄永祥》

模型字段content只负责存储文章内容,它不会对文章内容进行排版布局,如果要编写排版整齐、布局精美的博客文章,就需要引入Django的第三方功能应用Django CKEditor生成文章编辑器。

# 安装Django CKEditor

pip install django-ckeditor

需要在配置文件中进行配置

# myblog的settings.py

INSTALLED_APPS = [
    # 'django.contrib.admin',
    'myblog.myapps.MyAdminConfig',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'article',
    'album',
    'account',
    'interflow',
    'ckeditor',
    'ckeditor_uploader',
]
# 编辑器的配置信息
CKEDITOR_UPLOAD_PATH = "article_images"
CKEDITOR_CONFIGS = {
    'default': {
        'toolbar': 'Full'
    }
}
CKEDITOR_ALLOW_NONIMAGE_FILES = False
CKEDITOR_BROWSE_SHOW_DIRS = True

 下一步在项目中定义Django CKEditor的路由信息

# myblog的urls.py

from django.contrib import admin
from django.urls import path, include, re_path
from django.views.static import serve
from django.conf import settings

urlpatterns = [
    path('admin/', admin.site.urls),
    path('user/', include('account.urls')),
    path('', include('article.urls')),
    path('album/', include('album.urls')),
    path('board/', include('interflow.urls')),
    re_path('media/(?P<path>.*)', serve, {'document_root': settings.MEDIA_ROOT}, name='media'),
    re_path('static/(?P<path>.*)', serve, {'document_root': settings.STATIC_ROOT}, name='static'),
    # 设置编辑器的路由信息
    path('ckeditor/', include('ckeditor_uploader.urls')),
]

# article的models.py

from django.db import models
from django.utils import timezone
from account.models import MyUser
from ckeditor_uploader.fields import RichTextUploadingField


class ArticleTag(models.Model):
    id = models.AutoField(primary_key=True)
    tag = models.CharField('标签', max_length=500)
    user = models.ForeignKey(MyUser, on_delete=models.CASCADE, verbose_name='用户')

    def __str__(self):
        return self.tag

    class Meta:
        verbose_name = '博文分类'
        verbose_name_plural = '博文分类'


class ArticleInfo(models.Model):
    author = models.ForeignKey(MyUser, on_delete=models.CASCADE, verbose_name='用户')
    title = models.CharField('标题', max_length=200)
    content = RichTextUploadingField(verbose_name='内容')
    articlephoto = models.ImageField('文章图片', blank=True, upload_to='images/article/')
    reading = models.IntegerField('阅读量', default=0)
    liking = models.IntegerField('点赞量', default=0)
    created = models.DateTimeField('创建时间', default=timezone.now)
    updated = models.DateTimeField('更新时间', auto_now=True)
    article_tag = models.ManyToManyField(ArticleTag, blank=True, verbose_name='文章标签')

    def __str__(self):
        return self.title

    class Meta:
        verbose_name = '博文管理'
        verbose_name_plural = '博文管理'


class Comment(models.Model):
    article = models.ForeignKey(ArticleInfo, on_delete=models.CASCADE, verbose_name='所属文章')
    commentator = models.CharField('评论用户', max_length=90)
    content = models.TextField('评论内容')
    created = models.DateTimeField('创建时间', auto_now_add=True)

    def __str__(self):
        return self.article.title

    class Meta:
        verbose_name = '评论管理'
        verbose_name_plural = '评论管理'

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

立秋6789

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值