django reverse_lazy with parameters

发布时间 2023-05-29 15:58:09作者: Oops!#

Django中的reverse_lazy函数可以用于反向解析URL,即根据视图函数的名称和参数生成对应的URL。

要使用带有参数的reverse_lazy函数,可以将参数作为关键字参数传递给它。例如,假设我们有以下的URLconf配置:

 
javascript
复制代码
from django.urls import path
from .views import MyView

urlpatterns = [
    path('my-view/<int:pk>/', MyView.as_view(), name='my-view'),
]

该URL配置指定了一个名为my-view的URL模式,其中包含一个名为pk的整数类型参数。

我们可以在视图函数中使用以下代码来反向解析该URL:

 
python
复制代码
from django.urls import reverse_lazy

class MyView(View):
    def get_success_url(self):
        pk = self.kwargs['pk']
        return reverse_lazy('my-view', kwargs={'pk': pk})

在上面的代码中,get_success_url方法将返回具有pk参数的my-view URL。要将参数传递给reverse_lazy,我们需要将它们作为字典传递给kwargs关键字参数。这个字典的键应该与URL模式中的参数名称匹配。

使用reverse_lazy函数可以确保在URL解析时不会发生意外的副作用,并且可以避免在使用reverse函数时可能出现的循环引用问题。