Проверьте, существует ли параметр в URL-адресе Django

#python #django

#python #django

Вопрос:

Я пытаюсь получить URL-адрес, если он существует в URL-адресе, но продолжаю получать следующую ошибку:

django.utils.datastructures.Многозначный параметр Key Error: ‘sc’

Дело в том, что URL-адреса могут иногда выглядеть следующим образом:

 /allot-graph/
  

и иногда:

 /allot-graph/?sc='foo'
  

и в моей функции я делаю это:

 class AllotmentbyMonth(APIView):

    def get(self, request):

        q = request.GET['sc']

        if q:

            print("q", q)

            dataset = some query
        else:

            dataset = some query
  

Ответ №1:

Когда URL похож /allot-graph/?sc='foo' , вы бы использовали q=request.GET.get('sc' , '') .

sc — это нужный вам параметр, а » — значение по умолчанию, если sc не найден.

Другой способ продолжить — использовать URLconf, тогда ваши записи из регулярного выражения передаются функции в качестве аргументов (или именованных аргументов).

Например: (r'^ allot-graph/(?P< sc >w{0,50})/$', views.profile_page,)

Затем в вашем views.py вы бы так и сделали

 def profile_page(request, sc):
    # Rest of the method
  

Комментарии:

1. request.GET.get('sc') достаточно.

2. ' sc ' не будет работать, но 'sc' (без пробела) (похоже на опечатку)