1

1、对文章进行增删改查

 # 后台管理url
re_path(r'^cn_backend/$', views.cn_backend, name='cn_backend'),
re_path(r'^cn_backend/add_article/$', views.add_article, name='add_articles'),

view视图

from django.shortcuts import render, HttpResponse, redirect
from blog import models
from django.contrib.auth.decorators import login_required # 用户登录证装饰器 @login_required
def cn_backend(request):
"""后台管理页面"""
article_list = models.Article.objects.filter(user=request.user) return render(request, "backend/backend.html", locals()) @login_required
def add_article(request): if request.method == "POST":
title = request.POST.get('title')
content = request.POST.get('content') models.Article.objects.create(title=title,content=content, user=request.user)
return redirect("/cn_backend/")
return render(request, "backend/add_article.html", locals())

2、文本编辑器

点击新建文章就会出现编辑框

比如你写  hello 选择标题一    -----编辑器后台的模式为<h1>hello</h1>

编辑器的引入和使用

http://kindeditor.net/down.php

下载之后放在静态文件夹下面

编辑器的使用方法看官方文档:

http://kindeditor.net/docs/usage.html

文本编辑器 kindeditor  本质上就是(css+js)
官网:
http://kindeditor.net/demo.php
http://kindeditor.net/doc.php
  <div class="content form-group">
<label for="">内容(Kindeditor编辑器,不支持拖放/粘贴上传图片) </label>
<div>
<textarea name="content" id="article_content" cols="" rows=""></textarea>
</div>
</div>

在add_article.html中添加

 <script src="/static/JS/jquery-3.2.1.min.js"></script>
<script charset="utf-8" src="/static/blog/kindeditor/kindeditor-all.js"></script> <script>
KindEditor.ready(function(K) {
window.editor = K.create('#article_content',{
{#设置参数#}
width:"",
height:"",
resizeType:0,
uploadJson:"/upload/",
extraFileUploadParams:{
csrfmiddlewaretoken:$("[name='csrfmiddlewaretoken']").val()
},
filePostName:"upload_img" });
});
</script>

2.1编辑器参数设置

http://kindeditor.net/docs/option.html

2.2上传功能

  KindEditor.ready(function(K) {
window.editor = K.create('#article_content',{
{#设置参数#}
width:"",
height:"",
resizeType:0,
// 指定上传文件的路径
uploadJson:"/upload/",
extraFileUploadParams:{
csrfmiddlewaretoken:$("[name='csrfmiddlewaretoken']").val()
},
filePostName:"upload_img" });
});

2.3 在视图函数中写文件存在服务器的路径

只要是用户上传的文件最好放在media文件夹里面

3、bs的简单应用,xss攻击

防止别人输入脚本语言--对系统进行破坏

XSS攻击全称跨站脚本攻击,是为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS,XSS是一种在web应用中的计算机安全漏洞,
它允许恶意web用户将代码植入到提供给其它用户使用的页面中。

3.1、BeautifulSoup

对于HTML/XML数据的筛选,BeautifulSoup也是比较常用且使用简单的技术,

BeautifulSoup是一种非常优雅的专门用于进行HTML/XML数据解析的一种描述语言,可以很好的分析和筛选HTML/XML这样的标记文档中的指定规则数据
在数据筛选过程中其基础技术是通过封装HTML DOM树实现的一种DOM操作,通过加载网页文档对象的形式,从文档对象树模型中获取目标数据

 取文本

from bs4 import BeautifulSoup

s = "<h1>hello</h1> <span>world</sapn> <script>alert(1111)</script>"

soup = BeautifulSoup(s, "html.parser")      # 按照html格式过滤

print(soup.text)        # 过滤掉标签,只剩下text文本

print(soup.find_all())  # 按标签进行截断

for tag in soup.find_all():
print(tag.name) # 打印标签的name if tag.name == "script":
tag.decompose() # Recursively destroys the contents of this tree. print(str(soup))

3.2、bs4模块预防xss攻击

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), user=request.user)
return redirect("/cn_backend/") return render(request, "backend/add_article.html")

BBS+ BLOG系统(仿博客园)-原始代码

BBS--后台管理页面,编辑文章,xss攻击的更多相关文章

  1. 8 功能6:后台管理页面,编辑文章,xss攻击

    1.后台管理页面之文本编辑 # 后台管理url re_path(r'^cn_backend/$', views.cn_backend, name='cn_backend'), re_path(r'^c ...

  2. BBS - 后台管理

    一.添加文章 注: 后台管理页面,应该有个新得 app /blog/backend/ # 文章列表页/blog/add_article/ # 添加文章 # 后台管理re_path(r'backend/ ...

  3. python:页面布局 后台管理页面之常用布局

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...

  4. HTML高级标签(2)————窗体分帧(2)————后台管理页面

    使用frameset进行窗体分帧.构建简易的后台页面.这篇博客就作为一个简易后台管理页面的实战演练. watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd3px ...

  5. 老男孩Day16作业:登录、注册、后台管理页面(动态)

    一.作业需求: 1.后台管理主界面(左边菜单框.(全选.反选)框.返回顶部按钮) 2.老男孩登录.注册页面 二.博客地址:https://www.cnblogs.com/catepython/p/93 ...

  6. go语言实战教程之 后台管理页面统计功能开发(2)

    上节内容介绍了后台管理页面统计功能开发(1),从功能介绍,到接口请求分析和归类,最后是代码设计.经过上节内容的介绍,已经将业务逻辑和开发逻辑解释清楚,本节内容侧重于编程代码实现具体的功能. 当日增长数 ...

  7. 用jquery-easyui的布局layout写后台管理页面

    先在官网下载easyui文档 引入头部文件 <link rel="stylesheet" type="text/css" href="${pag ...

  8. 前端武器库系列之html后台管理页面布局

    设计网页,让网页好看:网上找模板 搜 HTML模板 BootStrap 一.页面布局之主站页面 主站布局一般不占满页面,分为菜单栏.主页面.底部 上中下三部分.伪代码如下: <div class ...

  9. Django用户登陆以及跳转后台管理页面3

    Django用户登陆以及跳转后台管理页面1http://www.cnblogs.com/ujq3/p/7891774.html Django用户登陆以及跳转后台管理页面2http://www.cnbl ...

随机推荐

  1. 不同安卓手机的 安卓版本不同,xpath元素也不同

    模拟器是 夜神模拟器 版本是 4.4.2 LG手机  版本是 8.0.0

  2. junit中线程需要注意的问题

    Junit主线程执行完毕后,就会结束进程,不关注是否有其他线程在运行.当Junit运行完毕后,如果其他线程还没有执行完毕,那么不会再执行. 使用CountDownLatch,保证启动的线程运行结束后, ...

  3. [UE4]增加开枪冷却时间, Get Time Seconds

    Get Time Seconds:游戏开始到现在过去了多少秒

  4. String,StringBuilder和StringBuffer区别

    String字符串常量 StringBuilder 字符串变量(非线程安全) StringBuffer  字符串变量(线程安全) 1.String String是字符串常量,为不可改变对象 Strin ...

  5. Mysql 64位解压版的安装

    先下载解压版的mysql 下载地址 https://dev.mysql.com/downloads/file/?id=474496 解压 进到里面新建这个文件夹和文件 打开my.ini文件(用文本编辑 ...

  6. ECharts动态加载堆叠柱状图的实例

    一.引入echarts.js文件(下载页:http://echarts.baidu.com/download.html) 二.HTML代码: <div style="width: 10 ...

  7. lunix 集群,负载均衡,location

       nginx location语法: location支持的语法优先级: 复制代码location匹配顺序 #  www.s14hanju.com/1.location = / {  我是代码1} ...

  8. js原生轮播

    js原生轮播 今天用js做了轮播图,做的不怎么好,希望大家能够看懂. 效果: 1.鼠标放在轮播图上自动停止 2.鼠标离开轮播图自动播放 3.鼠标点击轮播图上的小圆点跳转到相应的图上. 代码: < ...

  9. 使用idea创建maven多模块项目

    前言 参看:http://blog.csdn.net/zht666/article/details/19040733 使用Maven管理项目时,往往需要创建多个模块,模块之间存在相互引用的关系.对于M ...

  10. 自写UiAutomator 调试类

    package sms_test; import java.lang.*; import java.util.ArrayList; import java.util.Collection; impor ...