我正在运行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。
答案 0 :(得分:0)
此问题与Django无关。
我有以下JS代码:
document.addEventListener("DOMContentLoaded", function(event) {
history.pushState(document.title, null, window.location.pathname);
}
这用window.location.pathname
代替了浏览器的URL,其中没有查询字符串。我改用window.location.href
。