有什么方法可以在Django中检测请求URL是否以结尾的问号“?”结尾。

时间:2018-12-19 12:11:55

标签: django url get query-string

基本上问这个问题,但对于Python / Django: Java Web: Detect a URL with a trailing question mark and empty query string

结尾的问号可能会对SEO(重复内容)产生不良影响。在我们的情况下,很难在客户端避免这种情况,因此我想在服务器端重定向到非问号跟踪URL。但是,我找不到一种方法来检查Django是否发送了空查询字符串。

有无“?”附加request.GET为空。另外,request.get_full_path()request.build_absolute_uri()均不包含“?”如果request.GET中没有GET参数。 URL模式根本无法捕获查询参数。

如果有人知道如何,也可以在NGINX中捕获并重定向它。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我建议对有关的网址使用JavaScript代码。

示例: 假设我们有一个带有搜索输入的导航栏。

在客户端,您可以创建一个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)