更新时间:2023年01月13日15时31分 来源:传智教育 浏览次数:
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类的商城商品功能成功实现。