将URL参数传递给Python

0 投票
2 回答
2823 浏览
提问于 2025-04-18 12:19

我在我的一个模板里有以下代码。

<html>
<body>
    <script>
        var val1 = 10;
        var val2 = 20;
    </script>
    <a href="/generate/">Generate</a>
</body>
</html>

我想在views.py文件里的generate函数中使用val1和val2的值。大概是这样的。

def generate(request):
    # do something with val1 and val2

我不知道该怎么把这些值传递给这个函数。这样做的最佳方法是什么呢?我应该通过URL参数来获取这些信息吗?还是说我应该直接把JavaScript去掉,所有的事情都在generate()函数里用Python来做呢?

谢谢你的帮助!

2 个回答

3

你需要使用一些HTTP方法,比如GET或者POST。

在视图模板中使用这段代码(例如 - index.html):

<html>
<body>
    <form method="post" action="/generate">
        {% csrf_token %}
        <input type="number" name="val1" value="10">
        <input type="number" name="val2" value="20">
        <input type="submit" value="generate">
    </form>
</body>
</html>

然后在 views.py 中使用这段代码:

def index(request):
    return render_to_response('index.html', RequestContext(request))

def generate(request):
    val1 = request.POST.get('val1', 0)
    val2 = request.POST.get('val2', 0)
    sum = val1 + val2

    return HttpResponse(str(sum))

这个链接对你很有帮助:https://docs.djangoproject.com/en/dev/topics/forms/

2

使用GET方法传递参数:

<html>
    <body>
        <a href="/generate/?val1=10&val2=20">Generate</a>
    </body>
</html>

现在你可以通过请求属性在视图中访问这些参数:

def generate(request):
    if request.method == 'GET':
        val1 = request.GET.get('val1')
        val2 = request.GET.get('val2')
        #futher code

https://docs.djangoproject.com/en/dev/ref/request-response/#

撰写回答