最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2020年07月02日 15:31:03   作者:羽下佳人  
這篇文章主要介紹了django 裝飾器 檢測登錄狀態(tài)操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

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

base.py

def checkLogin(func):
 
  """
  查看session值用來判斷用戶是否已經(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, base
@base.checkLogin
def index(request):
  dict = {
    "article_list": article.getArticle(),
  }
  return render(request, 'index.html',dict)

1報錯:

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

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

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

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

from django.shortcuts import render,render_to_response,redirect
def checkLogin(func):
 
  """
  查看session值用來判斷用戶是否已經(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兩點區(qū)別:

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

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

補充知識:Django中的中間件與類視圖

類視圖

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

類視圖:以類的方式定義的視圖稱為類視圖

代碼可讀性好

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

因此大部分視圖都使用類進行封裝。

from django.views import View
class ClassView(View):
  """類視圖的介紹"""

  def get(self, request):
    """get請求方法"""
    print('get請求方法進次函數(shù)')
    return HttpResponse('get請求方法')

  def post(self, request):
    """post請求方法進此函數(shù)"""
    print('post請求方法')
    return HttpResponse('post請求方法')
  """
 在url中配置
 """
 urlpatterns = [
  url(r"^classview/$", views.ClassView.as_view())
  #ClassView是一個類 需要調(diào)用Django自帶的as_view方法轉(zhuǎn)換為view

]

中間件

中間件

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

我們可以使用中間件,在Django處理視圖的不同階段對輸入或輸出進行干預(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 裝飾器 檢測登錄狀態(tài)操作就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • http請求 request失敗自動重新嘗試代碼示例

    http請求 request失敗自動重新嘗試代碼示例

    這篇文章主要介紹了http請求 request失敗自動重新嘗試代碼示例,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下
    2018-01-01
  • python正則表達式re.match()匹配多個字符方法的實現(xiàn)

    python正則表達式re.match()匹配多個字符方法的實現(xiàn)

    這篇文章主要介紹了python正則表達式re.match()匹配多個字符方法的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • pytest中文文檔之編寫斷言

    pytest中文文檔之編寫斷言

    這篇文章主要給大家介紹了關(guān)于pytest中文文檔之編寫斷言的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用pytest具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • 利用Python實現(xiàn)翻譯HTML中的文本字符串

    利用Python實現(xiàn)翻譯HTML中的文本字符串

    這篇文章主要為大家介紹了如何利用Python實現(xiàn)翻譯HTML中的文本字符串功能,文中的示例代碼講解詳細,感興趣的小伙伴可以動手嘗試一下
    2022-06-06
  • python 字典有序并寫入json文件過程解析

    python 字典有序并寫入json文件過程解析

    這篇文章主要介紹了python 字典有序并寫入json文件過程解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-09-09
  • Python讀取圖片的方法詳解

    Python讀取圖片的方法詳解

    這篇文章主要為大家詳細介紹了Python中讀取圖片的實現(xiàn)方法,文中的示例代碼簡潔易懂,具有一定的參考價值,需要的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-08-08
  • Python里disconnect UDP套接字的方法

    Python里disconnect UDP套接字的方法

    這篇文章主要介紹了Python里disconnect UDP套接字的方法,本文使用的是ctypes繞過的方法,需要的朋友可以參考下
    2015-04-04
  • python編寫第一個交互程序步驟示例教程

    python編寫第一個交互程序步驟示例教程

    這篇文章主要為大家介紹了python編寫第一個交互程序示例教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-06-06
  • 關(guān)于Python形參打包與解包小技巧分享

    關(guān)于Python形參打包與解包小技巧分享

    今天小編就為大家分享一篇關(guān)于Python形參打包與解包小技巧分享,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • 使用Python的Tornado框架實現(xiàn)一個簡單的WebQQ機器人

    使用Python的Tornado框架實現(xiàn)一個簡單的WebQQ機器人

    這篇文章主要介紹了使用Python的Tornado框架實現(xiàn)一個簡單的WebQQ機器人,Tornado的異步特性可以提高I/O性能,需要的朋友可以參考下
    2015-04-04

最新評論

岗巴县| 墨竹工卡县| 兴城市| 九龙坡区| 登封市| 同江市| 石阡县| 吉林省| 嘉黎县| 涞水县| 汉川市| 泸西县| 泗洪县| 松阳县| 铜梁县| 泸定县| 定日县| 北辰区| 辽宁省| 琼中| 新安县| 江西省| 资阳市| 友谊县| 柳河县| 台东县| 游戏| 德江县| 大田县| 波密县| 嘉兴市| 舟山市| 乌海市| 安化县| 白沙| 忻城县| 灵丘县| 长沙县| 合水县| 嵊州市| 武平县|