¸üÐÂʱ¼ä: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ÇëÇóÖеIJéѯ×Ö·û´®¸½¼Óµ½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ÀàµÄÉ̳ÇÉÌÆ·¹¦Äܳɹ¦ÊµÏÖ¡£

±±¾©Ð£Çø