Python Flask Render_Template获取/设置变量



我在网上找不到我想要的东西,所以我希望也许有人能更好地解释一下。

我有一个按钮,它执行POST方法来选择汽车的模型。选择模型后,它会在下面为不同的装饰创建几个不同的按钮。这一切都很好,但我需要确定"模型"。这是第一个被选中的。所以我想能够发送设置一个变量,并在render_template上发送它。本质上,我需要的是能够

def order_page(model=None):
ORDERCONFIGURATORLABEL = "Please Select one of the available Models below"
CAR_DATA = [
{'name': 'Model 3', 'trim': ['Standard Range', 'Long Range']},
{'name': 'Model Y', 'trim': ['Standard Range', 'Long Range']},
{'name': 'Model S', 'trim': ['Standard Range', 'Long Range']},
{'name': 'Model X', 'trim':['Standard Range', 'Long Range']}
]
if request.method == "POST":

if request.form.get("Model 3 Button"):

CAR_DATA = [
{'name': 'Model 3', 'trim': 'Standard Range', 'price': '$35,000', 'picture':'model3.png'},
{'name': 'Model 3', 'trim': 'Standard Range Plus', 'price': '$39,990', 'picture':'model3.png'},
{'name': 'Model 3', 'trim': 'Mid Range', 'price': '$45,000', 'picture':'model3.png'},
{'name': 'Model 3', 'trim': 'Long Range', 'price': '$49,990', 'picture':'model3.png'},
{'name': 'Model 3', 'trim': 'Performance', 'price': '$56,990', 'picture':'model3.png'}]
return render_template("order.html", model="model3", CAR_DATA=CAR_DATA,ORDERCONFIGURATORLABEL = "", currentmodel = "Model 3",SELECTEDMODELLABEL="Great choice! Please select your trim.", currentcarimage=r"model3.png")

我显然可以在/order/model3中输入,但我需要能够在python中设置此链接。无论如何,我可以使用render_template设置/订单/或我完全使用这个错误吗?

因此,简单地说,我首先检查按钮是否发送了值"Model 3 button",但是当我单击第二个按钮进行修剪时,我失去了该值。有什么办法可以"保存"或"保存"吗?数据到我的下一个POST方法?

这是我的layout。html

<!doctype html>
<html>
<head>
<title>{{title}}</title>
<link rel="stylesheet" href="{{ url_for('static', 
filename='css/main.css') }}">
<meta charset="utf-8">
<meta name="description" content={{description}}>
<link rel="shortcut icon" href="/favicon.ico">
</head>
<body >
{% include 'navigation.html' %}
{% block content %}{% endblock %}
</body>
</html>

和我的order.html

{% extends 'layout.html' %}
{% block content %}
<div class="container">
<h1 text-align: center> {{title}}</h1>
<div class="content">
<p>{{paragraph1}}</p>
<p>{{paragraph2}}</p>
</div>

</div>
<div class="column c80">

<img src="{{url_for('static', filename=currentcarimage) }}" class="carimage" alt=""  />
<footer>$49000</footer>

</div>
<div class="column c20">
<h1 > Model Selector </h1>
<label class="clabel" >{{ORDERCONFIGURATORLABEL}}</label>
<div class="mybuttonparent">

</div>

<div class="mybuttonparent">


<form method="POST" action="/order">         
<button  class="btn" type="submit" name="Model 3 Button" value="Model 3 Button">Model 3</button>
</form>

</div>

<div class="mybuttonparent">
<form method="POST" action="/order">         
<button  class="btn" type="submit" name="Model Y Button" value="Model Y Button">Model Y</button>
</form>

</div>
<div class="mybuttonparent">
<form method="POST" action="/order">         
<button  class="btn" type="submit" name="Model S Button" value="Model S Button">Model S</button>
</form>

</div>
<div class="mybuttonparent">
<form method="POST" action="/order">         
<button  class="btn" type="submit" name="Model X Button" value="Model X Button">Model X</button>
</form>

</div>
<div><h2>{{currentmodel}}</h2></div>
<div><label class="clabel">{{SELECTEDMODELLABEL}}</label></div>
{% for trim in CAR_DATA%}
<div class="mybuttonparent">
<form method="POST" action="/order">         
<button  class="btn" type="submit" name='{{trim.trim}}' value='{{trim.trim}}'>{{trim.trim}}</button>
</form>

</div>
{% endfor %}


{% endblock %}

我试着用

<input  name="userselectedcar" value={{selectedmodel}} id="userselectedcar" />

并尝试获取值来检查,但它是空的。

carmodeltype = request.form.get("userselectedcar")

我将selectedmodel传递到我的render_template中,我可以在输入中看到它。然后当我点击第二个按钮时,我似乎失去了它,因为carmodeltype == None,而不是我选择的模型("model3")

您需要做的是在每个中呈现hidden字段表单,您希望从"服务器"上获取数据一面。

<input type="hidden" id="car_model" name="car_model" value="{model_goes_here}}">

我终于想出了一个解决问题的办法。

我最终使用Flask会话来保存来自最后一个POST方法的数据

保存数据:

session['car_model'] = 'model3'

和检索数据:

carmodel = session.get('car_model', None)

相关内容

  • 没有找到相关文章

最新更新