Как получить URL-адрес перед его отображением - PullRequest
1 голос
/ 02 мая 2020

Я хотел бы создать систему, которая должна определять, какие URL открыты пользователем, и подсчитывать время открытия.

Существует несколько разных URL, совместно использующих один и тот же WaitView (TemplateView), поэтому я хочу подсчитать цифры для каждого URL, когда пользователь щелкает по нему.

Я добавил в URL ди c и надеюсь, что он может вернуть правильный URL-адрес, открытый пользователем в context1 в Waitview.

Но я не удалось найти правильный способ получить правильный URL-адрес (я пытался использовать HttpRequest.get_full_path (), но он продолжает выдавать ошибку. "TypeError: get_full_path () отсутствует 1 обязательный позиционный аргумент: 'self'")

Более того, я надеюсь, что WaitView сможет получить правильный URL-адрес и количество раз, а затем показать время на открытой странице. (Нужен правильный URL-адрес перед его отображением)

Поэтому я хотел бы узнать, есть ли у вас предложения .

Очень благодарен за помощь.

# urls.py
'''
urlpatterns = [
    re_path('get_times/.+', WaitView.as_view(), {"url": ***CORRECT_URL***})
]

'''



# views.py
'''
class WaitView(TemplateView):
    template_name = 'wait.html'

    def get_context_data(self, **kwargs):
        context1 = kwargs.items()
        print(context1)
'''

1 Ответ

1 голос
/ 02 мая 2020

Объект запроса хранится в атрибуте .request для View. Таким образом, вы можете получить к нему доступ с помощью self.request в методах представления и, таким образом, получить URL-адрес с помощью:

class WaitView(TemplateView):
    template_name = 'wait.html'

    def get_context_data(self, **kwargs):
        print(<b>self.request.get_full_path()</b>)
        return super().get_context_data(**kwargs)

. Вы можете использовать метод .build_absolute_uri() [ Django -doc] для генерации абсолютного URI (включая протокол, имя хоста и т. Д. c.).

, поэтому нет необходимости добавлять параметр в контекст.

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