django 2.2中的可选url参数

问题描述 投票:1回答:1

我正在研究一个解决方案,其中我希望在应用程序中具有一个带有可选参数的url,如果不存在,则该位置用于德国。下面是我的代码,带有django 2.2和视图的URL。

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
python django regex url
1个回答
0
投票

您可以在此处创建两个url,一个具有country参数,另一个不具有:

urlpatterns = [
    path('', HomeView.as_view(), kwargs={'country': 'Germany'}),
    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=self.kwargs.get('country', 'Germany')
        )
© www.soinside.com 2019 - 2024. All rights reserved.