如何在没有表单的POST请求中发送url参数

时间:2012-05-27 10:08:20

标签: django url httpwebrequest url-parameters

我必须在url中传递一个参数。我不能像往常一样发送GET请求,变量和值会在请求的地址栏中显示。因此,最终用户可以更改此变量值的值并发送将要处理的请求。

href="url=/admin/usermanagement/?flag=2

我想发送隐藏flag=2

现在这是一个GET请求,它可以在地址栏中看到。如果您有任何想法将此更改为POST以隐藏和发送值,请提供您的建议。

2 个答案:

答案 0 :(得分:6)

你仍然可以使用html表单,但是“隐藏”它来自用户:

<!DOCTYPE html>
<html>
    <body>
        <form id="myform" method="post" action="/">
            {% csrf_token %}
            <input type="hidden" name="flag" value="2" />
            <a href="#" onclick="document.forms[0].submit();return false;">Let's go!</a>
        </form>
    </body>
</html>

观点:

def index(request):
    if request.method == 'POST':
        try:
            flag = request.POST['flag']
            # TODO use flag
        except KeyError:
            print 'Where is my flag?'

    return render_to_response('index.html', {},
        context_instance=RequestContext(request))

答案 1 :(得分:3)

您可以使用AJAX完全删除表单。

只需将其添加到您的JavaScript:

function postTo(url, query) {
    var request = (XMLHttpRequest?new XMLHttpRequest():new ActiveXObject());
    request.open('POST', url, true);
    request.send(query);
}

然后用这样的话打电话:

postTo('/admin/usermanagement/','flag=2');

请注意,这将 NOT 重新加载页面。如果您想重新加载页面,请使用Borges的答案。