Необязательный параметр url в django 2.2 - PullRequest
1 голос
/ 27 марта 2020

Я работаю над решением, в котором я хотел бы, чтобы в приложении был URL-адрес с необязательным параметром, если его там нет, местоположение для Германии. Ниже мой код с URL для django 2.2 и просмотра.

urls.py

urlpatterns = [
    path('<country>', HomeView.as_view(), name='home'),
]

views.py

class HomeView(TemplateView):
    template_name = 'data/index.html'

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        queryset = DataSet.objects.filter(location=self.request.GET.get('country', 'Germany'))
    return context

1 Ответ

1 голос
/ 27 марта 2020

Вы можете создать два url здесь, один с параметром country, а другой без:

urlpatterns = [
    path('', HomeView.as_view()<b>, kwargs={'country': 'Germany'}</b>),
    path('<country>', HomeView.as_view(), name='home')
]

или вы можете позволить Django самому представлению вводить 'Germany' в случай по умолчанию:

urlpatterns = [
    path('', HomeView.as_view()),
    path('<country>', HomeView.as_view(), name='home')
]

Обратите внимание, что параметры URL хранятся в self.kwargs, а не в self.request.GET:

from django.views.generic import ListView

class HomeView(ListView):
    template_name = 'data/index.html'
    model = DataSet

    def get_queryset(self, *args, **kwargs):
        return super().get_queryset(*args, **kwargs).filter(
            location=<b>self.kwargs.get(</b>'country', 'Germany'<b>)</b>
        )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...