8.后台管理

后台管理

1.后台管理页面之首页

2.后台管理页面之文章添加页

1.首页

在这里插入图片描述

base.html

1.引入backend.css
2.整体构造
	1.头部,2.左边面板,3.中间标签页

backend.html

1.继承base.html文件
2.重写 content的block如上图4

urls.py

 re_path("cn_backend/$", views.cn_backend),

view.py

def cn_backend(request):
    """获取后台客户端首页界面"""
    article_list = models.Article.objects.filter(user=request.user)
    return render(request, "backend/backend.html", {"article_list": article_list})

2.文章添加页

在这里插入图片描述

1.add_article.html

1.补充block为content的内容
2.引入KindEditor编辑器(添加上传参数extraFileUploadParams,filePostName,extraFileUploadParams)

2.urls.py

re_path("cn_backend/$", views.cn_backend),
re_path("cn_backend/add_article/$", views.add_article),

2.view.py

def upload(request):
    """编辑器上传文件接受视图函数"""
    print(request.FILES)
    img_obj = request.FILES.get("upload_img")
    print(img_obj.name)
    path = os.path.join(settings.MEDIA_ROOT, "add_article_img", img_obj.name)
    with open(path, "wb") as f:
        for line in img_obj:
            f.write(line)
    return HttpResponse("ok")

@login_required
def add_article(request):
    if request.method == "POST":
        title = request.POST.get("title")
        content = request.POST.get("content")
        # 防止xss攻击,过滤script标签
        soup = BeautifulSoup(content, "html.parser")
        for tag in soup.find_all():
            print(tag.name)
            if tag.name == "script":
                tag.decompose()
        # 构建摘要数据,获取标签字符串的文本前150个符号
        desc = soup.text[0:150] + "..."
        models.Article.objects.create(title=title, desc=desc, content=str(soup),
                                      create_time=datetime.datetime.now(), user=request.user)
        return redirect("/cn_backend/")

    return render(request, "backend/add_article.html")
posted @ 2021-05-28 07:15  阿无oxo  阅读(384)  评论(0)    收藏  举报