Django:传递不在 URL 内的参数

use*_*390 0 django

现在我的结果有一个很长的 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)

Meh*_*rki 5

当需要隐藏参数时,需要发送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