Django изменить шаблон URL - PullRequest
1 голос
/ 26 мая 2020

Мой шаблон URL:

path('business/average/turnover/<str:start_date>/<str:end_date>/', views.AverageTurnover.as_view())

когда go по URL-адресу отображается что-то вроде этого:

http://127.0.0.1:8000/business/average/turnover/2019-01-1/2019-12-12/

, но я хочу, чтобы это было так:

http://127.0.0.1:8000/business?start_date=adfadf&end_date=xsdfa

Как это сделать.

Примечание: у меня нет функции просмотра, отображающей этот URL-адрес, но когда я напрямую нажимаю на этот URL-адрес, он переходит в такие виды.

views.py

class AverageTurnover(APIView):
    '''Average Turn Over'''

    def get(self, request, start_date, end_date):
        avg_turnover = BusinessShareInfo.objects.filter(Date__range=(start_date, end_date)).aggregate(Avg('Turnover'))
        return Response(avg_turnover)        


Ответы [ 2 ]

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

Все, что вам нужно сделать, это получить GET запрос в вашем представлении. Вот как вы можете достичь того, чего хотите, но все же я бы порекомендовал сделать так, чтобы он был чище.

Тем не менее, вот изменения, которые вам нужно сделать.

  • Измените свой URL на
path('business/', views.AverageTurnover.as_view())
  • Измените свой views.py, чтобы он мог обрабатывать GET запросы (вы можете узнать о них здесь )

  • Также не забудьте добавить форму в шаблон. (вы можете узнать о них здесь )

Примечание: не забудьте использовать метод запроса GET, поскольку он передает данные в URL-адресе, и это то, что ты хочешь. Вы не хотите использовать метод запроса POST, поскольку он не передает данные по URL-адресу (намного чище)

Вы делаете это неправильно, я предлагаю вам прочитать ресурсы, о которых я упоминал. То, как вы принимаете аргументы, потребует, чтобы у вас был URL-адрес этого типа,

http://127.0.0.1:8000/business/average/turnover/2019-01-1/2019-12-12/

Если вы будете правильно использовать метод GET, вы можете изменить его на

http://127.0.0.1:8000/business?start_date=adfadf&end_date=xsdfa
0 голосов
/ 26 мая 2020

class AverageTurnover (generics.RetriveAPIView): '' 'Средний оборот' ''

def get(self, request, *args, **kwargs):
    start_date = self.request.query_params.get('start_date')
    end_date = self.request.query_params.get('end_date')
    avg_turnover = BusinessShareInfo.objects.filter(Date__range=(start_date, end_date)).aggregate(Avg('Turnover'))
    return Response(avg_turnover)    

Затем используйте URL-адрес @Hisham__Pak и при вызове этого API просто передайте параметры запроса, как вы упомянули.

http://127.0.0.1: 8000 / business? Start_date = adfadf & end_date = xsdfa

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