现在我的结果有一个很长的 URL,基本上是一长串参数。我通过按下按钮导航到结果(JavaScript):
window.location.href = ... URL with parameters here ...;
Run Code Online (Sandbox Code Playgroud)
像这样捕捉它们(views.py):
def Results(request,parameter1,...,parameterN)
Run Code Online (Sandbox Code Playgroud)
如何在 URL 内发送这些相同的参数,以及如何在视图中捕获它们?
编辑:
为了澄清,在一个最佳的世界中,我想发送对用户和搜索引擎爬虫隐藏的参数,以便用户/爬虫只能看到 URL:
www.example.com/results
Run Code Online (Sandbox Code Playgroud)
我做了类似的事情:
def Results(request):
parameter1 = ???
parameter2 = ???
...
parameterN = ???
Run Code Online (Sandbox Code Playgroud)
当需要隐藏参数时,需要发送POST请求。要使用方法发送参数POST,您可以使用 htmlform元素或javascript. 例如,您可以form像这样传递参数:
<form id="my_form" action="/results" method="POST">
{% csrf_token %}
<input type="hidden" name="param1" value=""/>
<input type="hidden" name="param2" value=""/>
<input type="hidden" name="param3" value=""/>
</form>
Run Code Online (Sandbox Code Playgroud)
input像这样填充 javascript 中的隐藏元素:
var my_form = document.forms['my_form'];
my_form.elements["param1"].value = "Some Value1";
my_form.elements["param2"].value = "Some Value2";
my_form.elements["param3"].value = "Some Value3";
Run Code Online (Sandbox Code Playgroud)
并在 javascript 中提交表单:
document.getElementById("my_form").submit();
Run Code Online (Sandbox Code Playgroud)
然后访问参数view:
def Results(request):
if request.method == "POST":
parameter1 = request.POST.get("param1", None)
parameter2 = request.POST.get("param2", None)
parameter3 = request.POST.get("param3", None)
else:
# handle get request
Run Code Online (Sandbox Code Playgroud)
如果您想POST使用 javascript 发送请求,请阅读此处:使用 Javascript 触发事件发送 HTTP Post