深入淺出瀏覽器渲染原理
阿新 • • 發佈:2021-01-19
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>