我在视图上测试重定向(需要登录)。
测试片段:
...
expected_url = build_url(
self.login_url,
get={'next': self.url}
)
self.assertRedirects(
response,
expected_url,
status_code=302
)
我得到AssertionError是因为是百分比编码的,通过( )expected_url显示的一个 django不是百分比编码的。login_requireddjango.contrib.auth.decorators.login_required
所以我得到:
AssertionError: Response redirected to 'http://testserver/log_in/?next=/payments/purchase/'
expected 'http://testserver/log_in/?next=payments%3Apurchase'
我的build_url功能如下所述。我dict用urllib.urlencode.
build_url来源:我如何使用 django urlresolvers 反向传递 GET 参数
def build_url(*args, **kwargs):
get = kwargs.pop('get', {})
url = reverse(*args, **kwargs)
if get:
url += '?' + urllib.urlencode(get)
return url
问题:
有没有办法告诉 django 显示
login_url百分比编码?我应该改用什么东西来
urllib.urlencode从 a 构建一个 urldict吗?- 百分比编码很重要,所以我必须遵循它吗?