教育行业A股IPO第一股(股票代码 003032)

全国咨询/投诉热线:400-618-4000

RedirectView的作用是什么?

更新时间:2023年01月13日15时31分 来源:传智教育 浏览次数:

好口碑IT培训

  RedirectView为重定向视图类,它继承了View类,具有View类提供的所有功能;此外它定义了一些独有的属性和方法,实现了重定向功能。对RedirectView类常用的特有属性和方法进行介绍,具体如下:

  (1)属性

  ①url:重定向的目标URL,字符串形式,若值为None引发410(Gone)错误。URL中可包含参数,path()函数可以字典形式为其传值。

  ②pattern_name:目标URL名称。

  ③permanent:用于设置重定向是否为永久重定向,默认为False,表示不设置为永久重定向。

  ④query_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()方法尝试根据pattern_name属性设置的URL名称,以反向解析的方式匹配URL。

  下面分别对本章实例1的views.py和goods/urls.py文件进行修改,基于RedirectView实现删除商品的功能。

  (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应用下子路由中用于删除商品的数据的路由。

  views.py和goods/urls.py修改完成后,重启项目,访问网页,若单击“删除”能删除商品,说明基于RedirectView类的商城商品功能成功实现。

领取课程

0 分享到:
和我们在线交谈!