色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

django 裝飾器 檢測(cè)登錄狀態(tài)操作

瀏覽:107日期:2024-09-28 16:16:39

1、檢測(cè)登錄狀態(tài)

base.py

def checkLogin(func): ''' 查看session值用來(lái)判斷用戶(hù)是否已經(jīng)登錄 :param func: :return: ''' def warpper(request,*args,**kwargs): if request.session.get(’username’, False): return func(request, *args, **kwargs) else: return HttpResponse(’/login’) return warpper

index.py:

from proApp import models, article, [email protected] index(request): dict = { 'article_list': article.getArticle(), } return render(request, ’index.html’,dict)

1報(bào)錯(cuò):

The view proApp.base.warpper didn’t return an HttpResponse object. It returned None instead.

django 裝飾器 檢測(cè)登錄狀態(tài)操作

解決辦法: 判斷用戶(hù)session后,一定要return返回值

2、登錄檢查成功,路由未被更改,頁(yè)面未跳轉(zhuǎn)

django 裝飾器 檢測(cè)登錄狀態(tài)操作

解決辦法: redirect(‘跳轉(zhuǎn)路徑和名稱(chēng)‘)方法,頁(yè)面跳轉(zhuǎn)

from django.shortcuts import render,render_to_response,redirectdef checkLogin(func): ''' 查看session值用來(lái)判斷用戶(hù)是否已經(jīng)登錄 :param func: :return: ''' def warpper(request,*args,**kwargs): if request.session.get(’username’, False): return func(request, *args, **kwargs) else: return redirect(’/login’) return warpper

注意:render與redirect兩點(diǎn)區(qū)別:

1、render返回一個(gè)登陸成功后的頁(yè)面,刷新該頁(yè)面將回復(fù)到跳轉(zhuǎn)前頁(yè)面。而redirect則不會(huì)

2、render返回一個(gè)登陸成功頁(yè)面,不會(huì)經(jīng)過(guò)url路由分發(fā)系統(tǒng),也就是說(shuō),不會(huì)執(zhí)行跳轉(zhuǎn)后url的試圖函數(shù)。這樣,返回的頁(yè)面渲染不成功;而redirect是跳轉(zhuǎn)到指定頁(yè)面,當(dāng)?shù)顷懗晒螅瑫?huì)在url路由系統(tǒng)進(jìn)行匹配,如果有存在的映射函數(shù),就會(huì)執(zhí)行對(duì)應(yīng)的映射函數(shù)。

補(bǔ)充知識(shí):Django中的中間件與類(lèi)視圖

類(lèi)視圖

函數(shù)視圖:以函數(shù)的方式定義的視圖稱(chēng)為函數(shù)視圖

類(lèi)視圖:以類(lèi)的方式定義的視圖稱(chēng)為類(lèi)視圖

代碼可讀性好

類(lèi)視圖相對(duì)于函數(shù)視圖有更高的復(fù)用性

因此大部分視圖都使用類(lèi)進(jìn)行封裝。

from django.views import Viewclass ClassView(View): '''類(lèi)視圖的介紹''' def get(self, request): '''get請(qǐng)求方法''' print(’get請(qǐng)求方法進(jìn)次函數(shù)’) return HttpResponse(’get請(qǐng)求方法’) def post(self, request): '''post請(qǐng)求方法進(jìn)此函數(shù)''' print(’post請(qǐng)求方法’) return HttpResponse(’post請(qǐng)求方法’) ''' 在url中配置 ''' urlpatterns = [ url(r'^classview/$', views.ClassView.as_view()) #ClassView是一個(gè)類(lèi) 需要調(diào)用Django自帶的as_view方法轉(zhuǎn)換為view]

中間件

中間件

Django中的中間件是一個(gè)輕量級(jí)、底層的插件系統(tǒng),可以介入Django的請(qǐng)求和響應(yīng)處理過(guò)程,修改Django的輸入或輸出。中間件的設(shè)計(jì)為開(kāi)發(fā)者提供了一種無(wú)侵入式的開(kāi)發(fā)方式,增強(qiáng)了Django框架的健壯性。

我們可以使用中間件,在Django處理視圖的不同階段對(duì)輸入或輸出進(jìn)行干預(yù)。

#先在子應(yīng)用文件下新建(自定義).py文件# 自定義中間鍵def outer(fuc): print(’調(diào)用前’) def inner(*args, **kwargs): print(’執(zhí)行前’) data = fuc(*args, **kwargs) print(’ 執(zhí)行后’) return data return inner#2. settings.py的middleware下面加入自定義的中間件’user1.middlewares.outer’ # 自定義中間件

django 裝飾器 檢測(cè)登錄狀態(tài)操作

django 裝飾器 檢測(cè)登錄狀態(tài)操作

django 裝飾器 檢測(cè)登錄狀態(tài)操作

以上這篇django 裝飾器 檢測(cè)登錄狀態(tài)操作就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Django
相關(guān)文章:
主站蜘蛛池模板: 国产三级日产三级韩国三级 | 免费观看一区二区 | 在线观看免费毛片 | 久久毛片免费看 | 国内精品一区二区在线观看 | 欧美一级精品 | 日韩经典一区 | 亚洲视频在线观看视频 | 成人a毛片手机免费播放 | 欧美午夜不卡 | 国产一区欧美 | 久久国产首页 | 精品极品三级久久久久 | 美女个护士一级毛片亚洲 | 日本免费在线一区 | 亚洲精品在线免费观看视频 | 久久中文字幕亚洲精品最新 | 99久热在线精品视频播 | 欧美日韩日本国产 | 成人国产在线看不卡 | 日本视频三区 | 亚洲国产精品久久久久秋霞不卡 | 国产精品久久久一区二区三区 | 国产一级一片免费播放视频 | 欧美特一级 | 99精品欧美一区二区三区 | 青草欧美 | 免费观看女人一摸全是水 | 日本美女福利视频 | 伊人五月天婷婷琪琪综合 | 普通话对白国产精品一级毛片 | 免费毛片全部不收费的 | a级毛片网站 | 99精品福利视频 | free性欧美hd另类精品 | 国内精品久久久久影院不卡 | 色综合91久久精品中文字幕 | 中文在线亚洲 | 国产欧美日韩免费一区二区 | 国产精品亚洲专一区二区三区 | 精品视频在线免费看 |