带有参数的基于Django类的视图中的reverse()函数

时间:2013-09-30 06:02:00

标签: django django-views django-urls

我有这样的网址:

url(r'^(?P<user_id>\d+)/profile/$', views.ProfileView.as_view(), name='profile'),

当用户点击Update Profile时,我会使用message更新表单并使用messaging framework重定向到相同的个人资料网址。

# views

# Use the message framework to pass the message profile successfully updated
messages.success(request, 'Profile details updated.')

# Redirect to the same view with the profile updated successfully message
return HttpResponseRedirect(reverse('profile', args=(request.user.id,)))

但是我收到了这个错误:

NoReverseMatch at /5/profile/

Reverse for 'profile' with arguments '(5L,)' and keyword arguments '{}' not found.

怎么了?

1 个答案:

答案 0 :(得分:3)

你得到的是因为Python 2.x.x的工作原理。

来自数据库行的所有整数都会以Ll为后缀(通常为大写L)。

一种快速而又脏的工作方式

return HttpResponseRedirect(reverse('profile', args=(int(long(request.user.id)),)))