我尝试应用我在此答案中看到的内容,但它不起作用:
Getting value from select tag using flask
我看不出他的情况有什么不同,所以我不明白为什么我的工作不起作用。
这是我的路线:
INSERT INTO [Table B] ([Personal Code], Unit)
SELECT [Personal Code],
STRING_AGG(Unit, ' / ')
FROM [Table A]
GROUP BY [Personal Code]
这是我的HTML: (我包括了用来更改显示的JS,以防万一我弄乱了它,尽管我看不到。)
(另外,请注意,下面的HTML是通过jinja2 include语句放置在主页中的,但是该模式已正确显示,所以我也看不到它会如何影响它。
class ChildSerializer(serializers.ModelSerializer):
class Meta:
model = models.Child
fields = ['id', 'name', 'parent']
class ParentChildSerializer(serializers.ModelSerializer):
class Meta:
model = models.Child
fields = ['id', 'name']
class ParentSerializer(serializers.ModelSerializer):
children = ParentChildSerializer(many=True)
class Meta:
model = models.Parent
fields = ['id', 'name', 'children']
def create(self, validated_data):
children = validated_data.pop('children')
parent = super().create(validated_data)
for child in children:
child['parent'] = parent
self.fields['children'].create(children)
return parent
我试图弄清楚放置@bp.route('/ecommerce/cart/add/product/<id>', methods=['GET', 'POST'])
@login_required
def ecommerceCartAdd(id):
select = request.form.get('modal-product-quantity')
print(str(select))
p = stripe.SKU.retrieve(id)
product = dict(
id=p.id,
prod_id=p.product,
name=p.attributes.name,
image=p.image,
price=convert_price(p.price)
)
session['cart'].append(product)
flash(f"[{product['name']}] added to cart", "info")
return redirect(url_for('projects.ecommerce'))
的位置以及将 <div class="modal-footer">
<form class="form-inline" method="POST" action="{{ url_for('projects.ecommerceCartAdd', id=p.id) }}">
<div class="input-group">
<label class="mr-sm-2 float-left" for="prod-quantity-select">Quantity: </label>
<select class="custom-select float-left" id="prod-quantity-select" onchange="AdjustQuantity()"
name="modal-product-quantity">
<option selected value="1">1</option>
{% for i in range(2, 100) %}
<option value="{{ i }}">{{ i }}</option>
{% endfor %}
</select>
</div>
<script>
function AdjustQuantity() {
var q = document.getElementById("prod-quantity-select");
var quantity = q.options[q.selectedIndex].value;
document.getElementById("modal-price-label").innerHTML = 'Total: ';
document.getElementById("modal-price-counter").innerHTML = '(x' + quantity + ')';
}
</script>
<a href="{{ url_for('projects.ecommerceCartAdd', id=p.id) }}" class="btn btn-primary btn-sm"> Add to
cart
</a>
</form>
<button type="button" class="btn btn-secondary btn-sm" data-dismiss="modal">Close</button>
</div>
放置在action="url_for...
标签而不是method="POST"
标签中的情况。
无论我做什么,我的输出都是select
。而且,我知道该路由未使用form
方法,因为当我将None
语句放在条件POST
中时,它不会打印-但就像我说的那样,否则它将打印print
。
我需要帮助来了解如何通过if request.method="POST"
字段发布和访问数据。
谢谢!
答案 0 :(得分:1)
有一个ahref伪装成一个按钮,因此您没有提交表单。
尝试更改此内容:
<a href="{{ url_for('projects.ecommerceCartAdd', id=p.id) }}" class="btn btn-primary btn-sm"> Add to cart </a>
对此:
<button type="submit" class="btn btn-primary btn-sm"> Add to cart </button>