Django Web服务器从浏览器URL中删除查询字符串

时间:2018-08-25 15:37:13

标签: python django

我正在运行Django开发Web服务器(python manage.py runserver),当我向视图提供的URL添加查询字符串时,该查询字符串将从浏览器的URL中删除。例如,当我访问http://127.0.0.1:8000/?test=y时,浏览器URL显示为http://127.0.0.1:8000。该日志虽然显示了GET参数:

[25/Aug/2018 11:18:41] "GET /?test=y HTTP/1.1" 200 8517

这是我的观点:

def main_page(request):
  if request.method == 'POST':
    return login(request)
  elif request.user.is_authenticated():
    return redirect_user_main_page(request)
  else:
    return render(request, 'main_page2.html', {
      'next': request.GET.get('next'),
      })

和我的网址:

  url(r'^$', main_page, name="main_page"),

在这种情况下采用else:路径。当我打印request.GET时,看到查询字符串。

我在所有浏览器上都观察到这种行为。

当我在Nginx和uWSGI之后运行Django应用程序时,我也观察到这种行为。

我正在使用Django 1.11.4。

1 个答案:

答案 0 :(得分:0)

此问题与Django无关。

我有以下JS代码:

document.addEventListener("DOMContentLoaded", function(event) {
  history.pushState(document.title, null, window.location.pathname);
}

这用window.location.pathname代替了浏览器的URL,其中没有查询字符串。我改用window.location.href