Как найти URL местоположения в объекте ответа Django? - PullRequest
7 голосов
/ 31 октября 2011

Допустим, у меня есть объект ответа Django.

Я хочу найти URL (местоположение). Однако заголовок ответа фактически не содержит поля Location или Content-Location.

Как определить из этого объекта ответа URL, который он показывает?

Ответы [ 2 ]

9 голосов
/ 27 февраля 2014

Это старый, но я столкнулся с подобной проблемой при выполнении юнит-тестов.Вот как я решил эту проблему.

Вы можете использовать response.redirect_chain и / или response.request['PATH_INFO'], чтобы получить URL-адреса перенаправления.

Ознакомьтесь также с документацией! Инструменты тестирования Django: assertRedirects

from django.core.urlresolvers import reverse
from django.test import TestCase


class MyTest(TestCase)
    def test_foo(self):
        foo_path = reverse('foo')
        bar_path = reverse('bar')
        data = {'bar': 'baz'}
        response = self.client.post(foo_path, data, follow=True)
        # Get last redirect
        self.assertGreater(len(response.redirect_chain), 0)
        # last_url will be something like 'http://testserver/.../'
        last_url, status_code = response.redirect_chain[-1]
        self.assertIn(bar_path, last_url)
        self.assertEqual(status_code, 302)
        # Get the exact final path from the response,
        # excluding server and get params.
        last_path = response.request['PATH_INFO']
        self.assertEqual(bar_path, last_path)
        # Note that you can also assert for redirects directly.
        self.assertRedirects(response, bar_path)
5 голосов
/ 31 октября 2011

Ответ не определяет URL, запрос делает.

В ответе содержится содержание ответа, а не его URL.

...