Как получить доступ к URL-адресу в django представлении - PullRequest
1 голос
/ 25 марта 2020

Как я могу получить доступ к URL в представлении Django. У меня есть представление, обрабатывающее следующие 5 URL:

localhost:8000/standings/
localhost:8000/standings/q1
localhost:8000/standings/q2
localhost:8000/standings/q3
localhost:8000/standings/q4

, и мое представление

class StandingsView(LoginRequiredMixin, TemplateView):
    template_name = 'standings.html'

Основано на q1, q2, q3, q4 или None в пути URL, я должен запросить данные из БД и выполнить рендеринг в данный шаблон.

Пожалуйста, предложите, как можно обработать такой сценарий ios.

1 Ответ

2 голосов
/ 25 марта 2020

Вы можете получить доступ к пути с помощью self.request.path:

class StandingsView(LoginRequiredMixin, TemplateView):
    template_name = 'standings.html'

    def get_context_data(self, *args, **kwargs):
        context = super().get_context_data()
        <b>path = self.request.path</b>
        # &hellip;
        return context

Но обработка пути может быть громоздкой и подверженной ошибкам. Вы можете определить пять URL здесь в urls.py и ввести значения в kwargs, например:

from django.urls import path

from app.views import StandingsView

urlpatterns = [
    path('standings/', StandingsView.as_view()<b>, kwargs={'q': None}</b>),
    path('standings/q1', StandingsView.as_view()<b>, kwargs={'q': 1}</b>),
    path('standings/q2', StandingsView.as_view()<b>, kwargs={'q': 2}</b>),
    path('standings/q3', StandingsView.as_view()<b>, kwargs={'q': 3}</b>),
    path('standings/q4', StandingsView.as_view()<b>, kwargs={'q': 4}</b>)
]

Затем вы можете получить доступ к добавленным kwargs в self.kwargs['q']:

class StandingsView(LoginRequiredMixin, TemplateView):
    template_name = 'standings.html'

    def get_context_data(self, *args, **kwargs):
        context = super().get_context_data()
        <b>q = self.kwargs['q']</b>
        # &hellip;
        return context

Однако вы, возможно, захотите взглянуть на ListView [Django -doc] , который может реализовать большую часть шаблонной логики c.

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