将 uuid 传给 reverse() 构造 url
Pass uuid to reverse() to construct url
我有一个 url:
url(r'^profile_detail/(?P<uuid>%s)/$' % uuid, ProfileDetailView.as_view(), name="profile_detail_view")
我需要将用户重定向到该视图,但我不知道如何在不硬编码的情况下构建 url,我不想这样做。
我想是这样的:
reverse('profile_detail_view' 'profile.uuid')
我尝试了一些变体,但我没有做对。我也尝试过使用 args 和 kwargs,但没有。
我该怎么做?
urls.py
在 urls.py
中,您只定义匹配时调用给定视图的模式。匹配的内容将作为命名参数传递给视图,例如
url(
r'^profile_detail/(?P<uuid>[\d\-]+)/$',
ProfileDetailView.as_view(),
name="profile_detail_view"
)
此模式将匹配数字 (0-9
) 和连字符 (-
)(取决于 uuid
,您可以在分组和长度方面加强正则表达式)。
查看
然后,您的视图负责查找此 uuid
所属的用户(如果未找到用户,则引发错误),例如
class ProfileDetailView(View):
def get(self, request, uuid):
try:
user = User.objects.get(uuid=uuid)
except User.DoesNotExist:
raise Http404 # or whatever else is appropriate
# ...
反转
通过将所有必要的东西传递给 reverse
函数来反转视图。 kwargs
中的键需要与 url 模式中的命名正则表达式相匹配 (?P<uuid>[\d\-]+)
reverse('profile_detail_view', kwargs={'uuid': profile.uuid})
我有一个 url:
url(r'^profile_detail/(?P<uuid>%s)/$' % uuid, ProfileDetailView.as_view(), name="profile_detail_view")
我需要将用户重定向到该视图,但我不知道如何在不硬编码的情况下构建 url,我不想这样做。
我想是这样的:
reverse('profile_detail_view' 'profile.uuid')
我尝试了一些变体,但我没有做对。我也尝试过使用 args 和 kwargs,但没有。
我该怎么做?
urls.py
在 urls.py
中,您只定义匹配时调用给定视图的模式。匹配的内容将作为命名参数传递给视图,例如
url(
r'^profile_detail/(?P<uuid>[\d\-]+)/$',
ProfileDetailView.as_view(),
name="profile_detail_view"
)
此模式将匹配数字 (0-9
) 和连字符 (-
)(取决于 uuid
,您可以在分组和长度方面加强正则表达式)。
查看
然后,您的视图负责查找此 uuid
所属的用户(如果未找到用户,则引发错误),例如
class ProfileDetailView(View):
def get(self, request, uuid):
try:
user = User.objects.get(uuid=uuid)
except User.DoesNotExist:
raise Http404 # or whatever else is appropriate
# ...
反转
通过将所有必要的东西传递给 reverse
函数来反转视图。 kwargs
中的键需要与 url 模式中的命名正则表达式相匹配 (?P<uuid>[\d\-]+)
reverse('profile_detail_view', kwargs={'uuid': profile.uuid})