day48-Django刪除修改功能何暇、富文本編輯器和日志文件

一陶夜、刪除功能

1.編輯urls.py配置文件

urlpatterns = [
    # 文章刪除
    url(r'^del_art/', views.del_art, name='del_art'),
    url(r'^del_art_id/(\d+)/', views.del_art_id, name='del_art_id'),

2.刪除文章功能
方法1:

from django.urls import reverse
from article.models import Article


def del_art(request):
    if request.method == 'GET':
        id = request.GET.get('id')
        # 查詢需要?jiǎng)h除的文章,并調(diào)用delete()進(jìn)行刪除
        Article.objects.filter(pk=id).delete()

        return HttpResponseRedirect(reverse('art:art_list'))

方法2:

from django.urls import reverse
from article.models import Article


def del_art_id(request, id):
    if request.method == 'GET':
        # 查詢文章并刪除
        Article.objects.filter(pk=id).delete()

        return HttpResponseRedirect(reverse('art:art_list'))

二裆站、修改功能

1.編輯urls.py配置文件

urlpatterns = [
    # 文章編輯
    url(r'^edit_art/(\d+)/', views.edit_art, name='edit_art'),
]

2.新建form表單

from django import forms


class EditArtForm(forms.Form):
    # required = True 表示必填項(xiàng)
    # min_length 表示最小長(zhǎng)度
    title = forms.CharField(min_length=5, required=True,
                            error_messages={
                                'required': '文章標(biāo)題是必填項(xiàng)',
                                'min_length': '文章標(biāo)題不能少于5個(gè)字符',
                            })
    desc = forms.CharField(min_length=20, required=True,
                           error_messages={
                               'required': '文章描述必須填寫',
                               'min_length': '文章描述不能少于20字符',
                           })
    content = forms.CharField(required=True,
                              error_messages={
                                  'required': '文章內(nèi)容必須填寫',
                              })
    icon = forms.ImageField(required=False)

3.修改文章功能

from article.Artform import EditArtForm
from article.models import Article


def edit_art(request, id):
    if request.method == 'GET':
        # 獲取編輯文章對(duì)象
        article = Article.objects.filter(pk=id).first()
        return render(request, 'add_article.html', {'article': article})

    if request.method == 'POST':
        form = EditArtForm(request.POST, request.FILES)
        if form.is_valid():
            title = form.cleaned_data['title']
            desc = form.cleaned_data['desc']
            content = form.cleaned_data['content']
            icon = form.cleaned_data['icon']
            article = Article.objects.filter(pk=id).first()
            article.title =title
            article.desc = desc
            article.content = content
            if icon:
                article.icon = icon
            article.save()
            return HttpResponseRedirect(reverse('art:art_list'))
        else:
            article = Article.objects.filter(pk=id).first()
            return render(request, 'add_article.html', {'form': form, 'article': article})

三条辟、富文本編輯器

1.在settings.py中配置如下參數(shù)

STATIC_URL = '/static/'
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static')
]

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

2.頁面中加載富文本編輯器

{% block js %}
    {% load static %}
    <script src="{% static 'kindeditor/kindeditor-all.js' %}" type="text/javascript"></script>
    <script src="{% static 'kindeditor/lang/zh-CN.js' %}" type="text/javascript"></script>
    <script type="text/javascript">
     KindEditor.ready(function(K) {
            window.editor = K.create('#editor_id',{
                uploadJson:'/util/upload/kindeditor'
            });
        });
    </script>
{% endblock %}

3.Django過濾器

1.safe:渲染標(biāo)簽的樣式
    {{ content_h2 | safe }}

2.upper:將所有的單詞都大寫
    {{ name | upper }}

3.lower:將所有的單詞都小寫
    {{ name | lower }}
    
4.capfirst:將所有的單詞首字母大寫
    {{ name | capfirst }}

5.first:獲取python變量中的第一個(gè)字符 
    {{ name | first }}

6.last:獲取python變量中的最后一個(gè)字符
    {{ name | last }}

四、日志文件

1.日志logging模塊
logging模塊可以收集記錄錯(cuò)誤宏胯,警告等調(diào)試信息羽嫡,在程序中可以捕獲這些信息,甚至可以將錯(cuò)誤的重要信息等通過郵件發(fā)送給開發(fā)者肩袍。
2.logging的組成

Loggers:日志系統(tǒng)的入口杭棵,可以向它寫入需要處理的消息

Handlers:Handler決定如何處理logger中的每條消息,它表示一個(gè)特定的日志行為

Formatters:日志記錄需要轉(zhuǎn)換成的文本格式

3.在settings.py文件中配置LOGGING日志信息

LOG_PATH = os.path.join(BASE_DIR, 'log')

LOGGING = {
    # 必須設(shè)置為1
    'version': 1,
    # 禁止日志,默認(rèn)值為True
    'disable_existing_loggers': False,
    # 格式化
    'formatters': {
        'default': {
            'format': '%(message)s'
        }
    },
    # logger接收日志
    'loggers': {
        '': {
            'handlers': ['console'],
            'level': 'INFO',
        }
    },
    # handlers處理日志
    'handlers': {
        'console': {
            'level': 'INFO',
            'filename': '%s/day08log.log' % LOG_PATH,
            'formatter': 'default',
            'class': 'logging.handlers.RotatingFileHandler',
            'maxBytes': 5 * 1024 * 1024
        }
    }
}

4.定義日志處理中間件

import time
import logging

from django.utils.deprecation import MiddlewareMixin


# 獲取logger
log = logging.getLogger(__name__)


class LogMiddleware(MiddlewareMixin):
    def process_request(self, request):
        # 綁定在request上的一個(gè)屬性,表示訪問的時(shí)間
        request.init_time = time.time()

    def process_response(self, request, response):
        # 請(qǐng)求URL耗時(shí)時(shí)間
        count_time = time.time() - request.init_time
        # 響應(yīng)狀態(tài)碼
        code = response.status_code
        # 請(qǐng)求地址
        path = request.path
        # 請(qǐng)求方式
        method = request.method
        # 響應(yīng)內(nèi)容
        content = response.content
        # 需要打印的日志信息
        log_str = '%s %s %s %s %s' % (path, method, code,
                                      count_time, content)
        # 交給logger處理日志
        log.info(log_str)
        return response

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末氛赐,一起剝皮案震驚了整個(gè)濱河市魂爪,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌艰管,老刑警劉巖滓侍,帶你破解...
    沈念sama閱讀 217,277評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異牲芋,居然都是意外死亡撩笆,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門缸浦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來夕冲,“玉大人,你說我怎么就攤上這事裂逐〈跤悖” “怎么了?”我有些...
    開封第一講書人閱讀 163,624評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵絮姆,是天一觀的道長(zhǎng)醉冤。 經(jīng)常有香客問我秩霍,道長(zhǎng)篙悯,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,356評(píng)論 1 293
  • 正文 為了忘掉前任铃绒,我火速辦了婚禮鸽照,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘颠悬。我一直安慰自己矮燎,他們只是感情好定血,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,402評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著诞外,像睡著了一般澜沟。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上峡谊,一...
    開封第一講書人閱讀 51,292評(píng)論 1 301
  • 那天茫虽,我揣著相機(jī)與錄音,去河邊找鬼既们。 笑死濒析,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的啥纸。 我是一名探鬼主播号杏,決...
    沈念sama閱讀 40,135評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼斯棒!你這毒婦竟也來了盾致?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,992評(píng)論 0 275
  • 序言:老撾萬榮一對(duì)情侶失蹤荣暮,失蹤者是張志新(化名)和其女友劉穎绰上,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體渠驼,經(jīng)...
    沈念sama閱讀 45,429評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蜈块,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,636評(píng)論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了迷扇。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片百揭。...
    茶點(diǎn)故事閱讀 39,785評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖蜓席,靈堂內(nèi)的尸體忽然破棺而出器一,到底是詐尸還是另有隱情,我是刑警寧澤厨内,帶...
    沈念sama閱讀 35,492評(píng)論 5 345
  • 正文 年R本政府宣布祈秕,位于F島的核電站,受9級(jí)特大地震影響雏胃,放射性物質(zhì)發(fā)生泄漏请毛。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,092評(píng)論 3 328
  • 文/蒙蒙 一瞭亮、第九天 我趴在偏房一處隱蔽的房頂上張望方仿。 院中可真熱鬧,春花似錦、人聲如沸仙蚜。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽委粉。三九已至呜师,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間贾节,已是汗流浹背匣掸。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評(píng)論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留氮双,地道東北人碰酝。 一個(gè)月前我還...
    沈念sama閱讀 47,891評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像戴差,于是被迫代替她去往敵國和親送爸。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,713評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • From:Python之日志處理(logging模塊) - 云游道士 - 博客園 https://www.cnbl...
    vigny的先生閱讀 2,684評(píng)論 3 5
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理暖释,服務(wù)發(fā)現(xiàn)袭厂,斷路器,智...
    卡卡羅2017閱讀 134,654評(píng)論 18 139
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,809評(píng)論 6 342
  • 切換到創(chuàng)建項(xiàng)目的目錄 cd C:\Users\admin\Desktop\DjangoProject創(chuàng)建名為pr...
    在努力中閱讀 3,270評(píng)論 2 3
  • 模塊間聯(lián)系越多球匕,其耦合性越強(qiáng)纹磺,同時(shí)表明其獨(dú)立性越差( 降低耦合性,可以提高其獨(dú)立性)亮曹。軟件設(shè)計(jì)中通常用耦合度和內(nèi)聚...
    riverstation閱讀 2,070評(píng)論 0 8