我有一个自定义Mixin,它可以检查特定服务的总使用量,并允许用户提交表单或重定向到success_url,并显示总使用量的错误消息。这对于没有任何动态参数(如pk或slug)的URL很有效。但是使用参数,Django无法找到URL模式来重定向到success_url。
urls.py (URL应用程序的www.example.com文件)
# some other urls
path('<int:post_id>/image/stock/', InstagramImageStockView.as_view() , name='instagram_image_stock'),
path('<int:post_id>/image/stock/generate/', InstagramGenerateStockImageView.as_view(), name='instagram_fetch_stock_image'),
# more URLs
views.py
class InstagramGenerateStockImageView(CustomMixin, FormView):
form_class = InstagramStockImageForm
success_url = 'instagram:instagram_image_stock'
# other code
自定义混合
class CustomMixin:
# other methods
def check_generation_status_and_redirect(self, request, *args, **kwargs):
if self.able_to_generate:
return super().dispatch(request, *args, **kwargs)
else:
# Set an error message based on conditions.
return redirect(self.success_url, kwargs=kwargs)
def dispatch(self, request, *args, **kwargs):
self.check_daily_count()
return self.check_generation_status_and_redirect(request, *args, **kwargs)
当用户达到限制时,我在重定向到success_url时收到NoReverseMatch错误。
我也尝试用reverse_lazy定义success_url,但没有成功。
谢谢。
1条答案
按热度按时间dzhpxtsq1#
对于关键字参数,
redirect
的工作方式与reverse
不同。而不是kwargs
参数,您应该通过redirect函数解包直接传递kwargs,如下所示:有关详细信息,请参阅有关
redirect
的文档。