现在我的结果有一个很长的网址,基本上是一长串的参数。我按下按钮和(JavaScript)导航到结果:
public static string getResource(string key)
{
return HttpContext.GetGlobalResourceObject("_20160216_tranlation", key).ToString();
}
像这样捕捉它们(views.py):
window.location.href = ... URL with parameters here ...;
如何在URL内部发送这些相同的参数,如何在视图中捕获它们?
编辑:
为了澄清,在一个最佳的世界中,我想发送隐藏在用户和搜索引擎抓取工具中的参数,以便用户/抓取工具只能看到网址:
def Results(request,parameter1,...,parameterN)
我做的事情如下:
www.example.com/results
答案 0 :(得分:2)
当您需要隐藏参数时,您应该发送POST
请求。要使用POST
方法发送参数,您可以使用html form
元素或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>
在javascript中填充隐藏的input
元素,如下所示:
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";
并在javascript中提交表单:
document.getElementById("my_form").submit();
然后访问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
如果您想使用javascript Sending an HTTP Post using Javascript triggered event
发送POST
请求,请在此处阅读
答案 1 :(得分:0)
您可以访问GET词典中的url参数
www.example.com/?parm1=baz&&parm2=baz
在视图中:
def ViewFunction(request):
parm1 = request.GET['parm1']
parm2 = request.GET['parm2']
如果这些参数是可选的,您将需要使用默认值,例如:
parm1 = request.GET.get('parm1',None)
请注意, GET参数不安全。在代码中使用它们之前,应该正确地转义它们。一个简单的解决方案是使用django表单,将GET值传递给表单,然后使用form.cleaned_data
。
当您有太多参数时,请检查您的视图和网址,也许您可以将一些参数转换为网址捕获的参数。