urllib.urlencode的替代方法,用于从dict

时间:2015-10-20 21:31:20

标签: django urllib urlencode percent-encoding

我在视图上测试重定向(需要登录)。

测试片段:

...
expected_url = build_url(
    self.login_url,
    get={'next': self.url}
)
self.assertRedirects(
    response,
    expected_url,
    status_code=302
)

我得到AssertionError,因为expected_url是百分比编码,django通过login_required显示的(django.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 func,如下所述。我使用dict编码urllib.urlencode

build_url来源:How do i pass GET parameters using django urlresolvers reverse

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来构建网址 一个dict

  • 百分比编码是否重要,所以我必须遵循它?

0 个答案:

没有答案