教育行業(yè)A股IPO第一股(股票代碼 003032)

全國咨詢/投訴熱線:400-618-4000

RedirectView的作用是什么?

更新時間:2023年01月13日15時31分 來源:傳智教育 瀏覽次數(shù):

好口碑IT培訓

  RedirectView為重定向視圖類,它繼承了View類,具有View類提供的所有功能;此外它定義了一些獨有的屬性和方法,實現(xiàn)了重定向功能。對RedirectView類常用的特有屬性和方法進行介紹,具體如下:

  (1)屬性

 ?、賣rl:重定向的目標URL,字符串形式,若值為None引發(fā)410(Gone)錯誤。URL中可包含參數(shù),path()函數(shù)可以字典形式為其傳值。

 ?、趐attern_name:目標URL名稱。

 ?、踦ermanent:用于設置重定向是否為永久重定向,默認為False,表示不設置為永久重定向。

 ?、躴uery_string:用于設置是否將GET請求中的查詢字符串附加到URL,默認為False,表示不將查詢字符串附加到URL,直接丟棄。

  (2)方法

  RedirectView類的常用方法為get_redirect_url(),該方法用于構造重定向的目標URL,它的語法格式如下:

   get_redirect_url(self, *args, **kwargs)

  get_redirect_url()方法默認使用類的url屬性設置的目標URL,若URL屬性未設置,get_redirect_url()方法嘗試根據(jù)pattern_name屬性設置的URL名稱,以反向解析的方式匹配URL。

  下面分別對本章實例1的views.py和goods/urls.py文件進行修改,基于RedirectView實現(xiàn)刪除商品的功能。

  (1)views.py

  在views.py中定義繼承了RedirectView類的視圖類DeleteView,在該類中使用url屬性設置重定向的目標URL、重寫get_rediect_url()方法,在get_redirect_url()方法中刪除用戶選擇的商品,并返回重定向。具體代碼如下:

   class DeleteGood(RedirectView):
       url = '/'
       permanent = True
       def get_redirect_url(self, *args, **kwargs):
           good = get_object_or_404(Goods, id=kwargs['gid'])
           good.delete()
           return super().get_redirect_url(*args, **kwargs)

  (2)urls.py

  在goods應用的urls.py文件中修改刪除商品的URL,修改后的代碼如下:

   path('delete<int:gid>', DeleteGood.as_view()),

  以上代碼需替換goods應用下子路由中用于刪除商品的數(shù)據(jù)的路由。

  views.py和goods/urls.py修改完成后,重啟項目,訪問網(wǎng)頁,若單擊“刪除”能刪除商品,說明基于RedirectView類的商城商品功能成功實現(xiàn)。

領取課程

0 分享到:
和我們在線交談!