Есть ли в Django встроенный способ получения последнего URL-адреса приложения, которое посетил текущий пользователь? - PullRequest
0 голосов
/ 05 августа 2009

Я надеялся, что у Django есть встроенный способ получения последнего URL, который был посещен в самом приложении. Когда я пишу это, я понимаю, что есть некоторые сложности в выполнении чего-то подобного (за исключением, например, страниц, которые перенаправляют), но я подумал, что мне стоит попробовать.

Если бы для этого не было встроенной функции, какую стратегию вы бы использовали? Я имею в виду не просто сохранение URL-адреса в сеансе вручную и обращение к нему при перенаправлении. Это сработало бы, конечно, но я ненавижу мысль о необходимости помнить, чтобы сделать это для каждого представления. Кажется подверженным ошибкам и не очень элегантным.

О, и я бы предпочел не зависеть от конкретных переменных среды рефералов сервера.

Ответы [ 2 ]

5 голосов
/ 05 августа 2009

Нет, нет ничего подобного встроенному в ядро ​​Django (и оно не встроено, потому что это не распространенный шаблон использования).

Как предположил Хавьер, вы можете создать промежуточное программное обеспечение, которое делает то, что вы хотите. Примерно так:

class PreviousURLMiddleware(object):
    def process_response(request, response):
        if response.status_code == 200:
            request.session['previous_url'] = request.get_full_url()
        return response

Это промежуточное ПО должно было бы идти после SessionMiddleware в ваших настройках, чтобы гарантировать, что сессия будет обновлена ​​после этого (в документах есть симпатичная картинка , объясняющая, почему это так).

0 голосов
/ 05 августа 2009

Вы можете просто написать промежуточное программное обеспечение, которое делает именно это, не нужно повторять код регистрации для каждой функции представления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...