我的一个模板中有以下代码。
<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完成所有操作?
感谢您的帮助!
答案 0 :(得分: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/
答案 1 :(得分: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/#