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

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

RedirectView的作用是什么?

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

好口碑IT培訓(xùn)

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

  (1)屬性

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

  ②pattern_name:目標(biāo)URL名稱。

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

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

  (2)方法

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

   get_redirect_url(self, *args, **kwargs)

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

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

  (1)views.py

  在views.py中定義繼承了RedirectView類的視圖類DeleteView,在該類中使用url屬性設(shè)置重定向的目標(biāo)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應(yīng)用的urls.py文件中修改刪除商品的URL,修改后的代碼如下:

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

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

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

領(lǐng)取課程

0 分享到:
和我們?cè)诰€交談!