博客后台富文本编辑
- 简单文本编辑器->直接贴入HTML代码
打开blog_detail.html找到
<div class="blog-content"> {{blog.content}}</div>
改为:
<div class="blog-content"> {{ blog.content|safe }}</div>
{#显示html#}
打开blog_list.html找到博客内容里面的一句话:
<p>{{ blog.content|truncatechars:50 }}</p>
改为:
<p>{{ blog.content|striptags|truncatechars:50 }}</p>
{#过滤标签#}
- 富文本编辑->最终解析成HTML:富文本编辑器和markdown编辑器
使用djnago-ckeditor
选择标准: - 具有基本的富文本编辑功能
- 可以上传图片
- 可以查看源代码
- 有持续更新
-
安装 pip install django-ckeditor
-
注册应用 'ckeditor',
-
配置model 把字段改成RichTextField 打开blog app下的models.py,添加如下代码:
from ckeditor.fields import RichTextField content = RichTextField()
python manage.py makemigrations
python manage.py migrate
打开http://127.0.0.1:8000/admin 进入修改界面如下: 5.png
进入blog.css,把
/*div.blog-content{ text-indent: 2em; }*/
注释掉 上传图片功能
- 安装 pip install pillow
- 注册应用:'ckeditor_uploader',
- 配置settings
python #media配置 MEDIA_RUL="/media/" MEDIA_ROOT=os.path.join(BASE_DIR,"media") #配置ckeditor CKEDITOR_UPLOAD_PATH='upload/'
在mysite总文件夹下创建media文件夹
- 配置url,打开mysite下的urls.py,添加一条代码:path('ckeditor',include('ckeditor_uploader.urls')),
https://pypi.org/project/django-ckeditor/ settings.py添加如下代码:
urls.py天下如下代码:#media配置 MEDIA_RUL="/media/" MEDIA_ROOT=os.path.join(BASE_DIR,"media") #配置ckeditor CKEDITOR_UPLOAD_PATH='upload/'
from django.confimport settings from django.conf.urls.static import static # 建议只在开发的时候使用
urlpatterns+=static(settings.MEDIA_RUL,document_root=settings.MEDIA_ROOT)
5. 配置model 把字段改为RichTextUploadingField
```python from
ckeditor_uploader.fields import RichTextUploadingField content=RichTextUploadingField()
python manage.py makemigrations
python manage.py migrate
博客阅读简单计数
1. 简单计数处理
1.blog模型添加字段记录 2.每次有人开打记录数加1
打开blog app下的models.py 在blog类下添加一行代码:
readed_num=models.IntegerField(default=0)
blog app 下的admin.py下的BlogAdmin添加一个字段
list_display=("title","blog_type","author","readed_num","created_time","last_update_time")
cmd下运行
python manage.py makemigrations
python manage.py migrate
打开blog app下的views.py下的blog_detail函数
添加如下代码:
blog.readed_num +=1
blog.save()
但是要注意的是最后的更新时间也随之更改了 打开blog_detail.html 在<ul
class="blog-info-description">里面添加一行代码:
<li>阅读:({{ blog.readed_num }})</li>
修改blog.css代码:
2em; }
把2em改为1em
打开blog_list.html,在如图所示的地方添加代码:
怎样才算阅读一次
- 无视是否同一个人每次打开都记录
- 若是同一个人,没隔多久打开才算阅读一次 利用cookie实现阅读计数规则
打开blog app下的views.py的blog_detail处理函数
response=render_to_response("blog/blog_detail.html",context)#响应
response.set_cookie(key='blog_{}_readed'.format(blog_pk),value='true')#保存相关数据dict,有效期60秒,如果默认则是浏览器关闭cookie失效 ,max_age=60,expires=datetime
return response
打开blog app下的views.py的blog_detail处理函数 :
if not request.COOKIES.get('blog_{}_readed'.format(blog.pk)):
blog.readed_num += 1
blog.save()
该方法缺点:
- 后台编辑博客可能影响数据
- 功能单一无法统计某一天的阅读数
网友评论