ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

django入门到精通⑧消息管理器和mysql数据库的互动

2021-01-19 20:02:06  阅读:243  来源: 互联网

标签:__ 管理器 app MessageType django mysql import message


django入门到精通⑧消息管理器和mysql数据库的互动

1.message_test/settings.py配置

 

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'app',
    'app.templatetags',
]


TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [BASE_DIR + '/templates'],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]



DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'muke_lession_test',
        'USER':'root',
        'PASSWORD': 'root',
        'HOST': '127.0.0.1',
        'PORT': 3306
    }
}

总路由配置

message_test/urls.py

from django.contrib import admin
from django.urls import path,include
from app import urls as app_urls

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include(app_urls))
]

2.常量的配置
app/consts.py

# _*_ coding:utf-8 _*_
# __author__ == 'jack'
# __date__ == '2020-12-31 8:28 PM'

from enum import Enum


class MessageType(Enum):
    info = "info"
    warning = "warning"
    error = "error"
    danger = "danger"
    delete = "delete"


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'
MessageType.delete.color = 'yellow'

SensitiveWord = ['天气', '坏人', '不开心']

3.自定义过滤器的使用

app/templatetags/custom.py

# _*_ coding:utf-8 _*_
# __author__ == 'jack'
# __date__ == '2020-12-31 9:03 PM'

import jieba
from django import template
from app.consts import SensitiveWord
import time

register = template.Library()


@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 SensitiveWord:
            new_message.append('*')
        else:
            new_message.append(m)
    if new_message:
        return ''.join(new_message)
    return value


@register.filter
def sample_check(value):
    # 自定义的关键词过滤器
    cut_message = jieba.lcut(value)
    print(cut_message)
    print(SensitiveWord)
    check = list(set(cut_message) & set(SensitiveWord))

    if len(check) != 0:
        return '该消息涉及违禁词汇,已被屏蔽'
    return value


@register.filter
def add_message_year(value, year):
    return '{} {}'.format(value, year)


@register.filter
def date_convert(value):
    timearray = time.localtime(value)
    otherStyleTime = time.strftime("%Y-%m-%d %H:%M:%S", timearray)
    return otherStyleTime

4.app/models.py的定义

# coding:utf-8

from django.db import models
from .consts import MessageType


class Message(models.Model):
    content = models.TextField()
    message_type = models.CharField(max_length=10, db_index=True)
    created_time = models.IntegerField(default=0)

    def __str__(self):
        return 'type:{}, content:{}'.format(self.message_type, self.content)

    @property
    def message_typ(self):
        try:
            return MessageType[self.message_type]
        except:
            return MessageType.info

5.路由定义

app/urls.py

# _*_ coding:utf-8 _*_
# __author__ == 'jack'
# __date__ == '2020-12-29 8:27 PM'

from django.urls import path
from .views import LessionThree, LessionFourPageOne, LessionFourPageTwo, DeleteMessage, UpdateMessage

urlpatterns = [
    path('three/<str:message_type>', LessionThree.as_view(), name="three"),
    path('fourPageOne/<str:message_type>', LessionFourPageOne.as_view()),
    path('delete/', DeleteMessage.as_view()),
    path('update/', UpdateMessage.as_view()),
    path('fourPageTwo', LessionFourPageTwo.as_view(), name='fourpagetwo')
]

6.模板文件

templates/three.html

{% load custom %}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
{% if error %}
    <h3>error {{ error }}</h3>
{% else %}
    <label style="color:{{ message_type.color }}">{{ message_type.label }}</label>
    <span style="color:{{ message_type.color }}">{{ message|deep_check_message|add_message_year:2020 }}</span>
{% endif %}
</body>
</html>



templates/four_page_one.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    {{ error }}
</body>
</html>

templates/four_page_two.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
{% load custom %}
<h1>this page tow</h1>

{% for message in messages %}
        <li style="color:{{ message.message_typ.color }}">
            {{ message.id }}    {{ message.content }}   时间:{{ message.created_time|date_convert }}
            <a href="http://127.0.0.1:8000/delete?id={{ message.id }}">删除</a>
        </li>

{% endfor %}
</body>
</html>

 

标签:__,管理器,app,MessageType,django,mysql,import,message
来源: https://www.cnblogs.com/reblue520/p/14299701.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有