Есть ли способ изменить request.path перед сопоставлением URL-адресов? - PullRequest
7 голосов
/ 17 февраля 2012

Когда я получаю запрос на путь, который включает слово «self», я хочу заменить его идентификатором пользователя перед сопоставлением его с URL-адресом. Я попытался использовать промежуточное программное обеспечение, как это:

def process_request(self, request):
    if '/self/' in request.path:
        request.path = request.path.replace('/self/','/' + str(request.user.id) + '/')

Замена работает, но, очевидно, выполняется после сопоставления URL. Есть ли способ изменить путь до этой точки?

Ответы [ 2 ]

9 голосов
/ 17 февраля 2012

Очевидно, что переход по URL выполняется не с использованием request.path, а request.path_info.То же самое промежуточное программное обеспечение, изменяющее эту переменную, работает.

1 голос
/ 17 февраля 2012

Почему вы хотите изменить URL, а затем сопоставить этот новый URL?Почему бы не направить URL-адрес непосредственно к нужному представлению и методу, а затем работать с request.user.id, как если бы вы изменили URL-адрес?

Возможно, другой пример иллюстрирует то, что вы пытаетесь сделать.

(Делая это ответом, так как я не могу комментировать)

...