Любой способ обнаружить в Django, заканчивается ли URL-адрес запроса завершающим вопросительным знаком "?" - PullRequest
0 голосов
/ 19 декабря 2018

В основном задают этот вопрос, но для Python / Django: Java Web: определение URL-адреса с конечным вопросительным знаком и пустой строкой запроса

Конечный вопросительный знак может плохо влиять наSEO (дублированный контент).В нашем случае очень сложно избежать этого на стороне клиента, поэтому я бы хотел перенаправить на стороне сервера URL-адрес, не связанный с вопросительными знаками.Однако я не могу найти способ проверить в Django, была ли отправлена ​​пустая строка запроса.

С и без "?"добавлено, request.GET пусто.Кроме того, ни request.get_full_path(), ни request.build_absolute_uri() не содержат "?"если нет параметров GET в request.GET.Шаблоны URL вообще не фиксируют параметры запроса.

Также можно было бы захватить и перенаправить это в NGINX, если кто-нибудь знает, как ...

Есть идеи?

1 Ответ

0 голосов
/ 19 декабря 2018

Я предлагаю использовать код JavaScript для соответствующих URL.

Пример: Предположим, у нас есть навигационная панель с поисковым вводом.

Вкл.на стороне клиента вы можете создать URL:

document.getElementById("search_click").addEventListener("click", function(){
  var $search_term = document.getElementById("search_term").value;
  var parm1 = "?q="+ $search_term;
  var url   = "{% url 'search_app:searchView' %}";
  window.location.replace(url+parm1);
});

На стороне сервера:

def searchView(request, *args, **kwargs):
 if request.GET.get('q') == '':
   return redirect('app:view', *args)
...