django 练习枚举 + 敏感违禁关键字过滤

第三天学习:

1、创建一个项目

2、创建一个子应用 index,并在 setting.py 中注册子应用

3、创建视图函数 views.py

from django.shortcuts import render
from .consts import MessageType
# Create your views here.
from django.views.generic import View
class Message(View):
    def get(self,request,message_type):
        data = {}
        try:
            message_type_obj = MessageType[message_type]
        except:
            data['error'] = '没有这个消息类型'
            return render(request,'message.html',data)
        message = request.GET.get('message','')
        if not message:
            data['error'] = '消息不能为空'
            return render(request,'message.html',data)
        data['message'] = message
        data['message_type'] = message_type_obj
        return render(request, 'message.html', data)

3、创建子应用的路由 urls.py,在根路由中引入子路由

from django.urls import path
from .views import Message # 导入视图函数
urlpatterns = [
    path('messages/<str:message_type>',Message.as_view()),
]

4、在子应用的目录下新建一个 python 包 templatetags 用于书写过滤器 mysecondfilter.py

# 创建一个违禁关键字检查过滤器
from  django import  template
# 导入违禁关键词列表
from index.consts import SenstiveWord
# 导入第三方方库用于切取字符串词组
import jieba
register = template.Library()
@register.filter
def simple_check(value):
    cut_message = jieba.lcut(value)
    check = list(set(cut_message) & set(SenstiveWord))
    print(cut_message)
    if check:
        return '该消息涉及敏感内容,已被屏蔽'
    return value
@register.filter(name='deep_check_message')
def deep_check(value):
    cut_message = jieba.lcut(value)
    new_message = []
    for m in cut_message:
        if m in SenstiveWord:
            new_message.append('*')
        else:
            new_message.append(m)
    if new_message:
        return ''.join(new_message)
    return value

5、新建一个违禁过滤词库 和枚举的类 consts.py

from enum import Enum  # 枚举
#创建一个枚举的类
class MessageType(Enum):
    info = 'info'
    warning = 'warning'
    error = 'error'
    danger = 'danger'
# 添加属性
MessageType.info.label = '信息'
MessageType.warning.label = '警告'
MessageType.error.label = '错误'
MessageType.danger.label = '危险'

MessageType.info.color = 'green'
MessageType.warning.color = 'orange'
MessageType.error.color = 'gray'
MessageType.danger.color = 'red'
# 创建一个违禁关键词列表
SenstiveWord = ['暴力','恐怖','血腥']

6、在根目录下新建一个文件夹 templates 编写htmll 文件 message.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
{% if error %}
    <h3>error:{{error}}</h3>
{% else %}
<!--导入自定义的过滤器 mysecondfilter-->
{% load mysecondfilter %}
    <span style="color:{{message_type.color}}">{{message.label}}---{{message|deep_check_message}}</span>
{% endif %}

</body>
</html>

7、最终效果:

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值