我目前正在尝试创建一个小型 SQL 数据库。
我对 python、SQL、flask 等相当陌生,所以如果它真的很简单,我很抱歉。
所以我已经创建了大部分代码(显示在底部),但我想要两个按钮:id="admin_user_demote"
和 id="admin_user_promote"
两者都从同一个“下拉列表(选择)”中提取所需的信息。
我想知道这是否可能,并且任何有助于解决问题的帮助将不胜感激。
<form action="/admin_user." method="post">
<select class="user_search_admin" type="text" name="user_search_admin" id="user_search_admin">
{% for loginUser in loginUsers %}
<option>{{ loginUser.username}}</option>
{% endfor %}
</select>
<button type="submit" class="admin_user" id="admin_user_promote" onclick="/admin_user.admin_user_promote" value="admin_user_promote">
<b>Make Selected User an Admin</b>
</button>
<button type="submit" class="delete_user" id="admin_user_demote" onclick="/admin_user.admin_user_demote" value="admin_user_demote">
<b>Make Selected User a regular user</b>
</button>
</form>
Python 位:
@auth.route('/admin_user', methods=['GET', 'Post'])
def admin_user_promote():
bla bla bla
def admin_user_demote():
bla bla bla
预先感谢您提供的所有帮助。
最佳答案
你已经非常接近了,你只需要给你的提交按钮一个“名称”,这样你就可以在提交表单时引用它们的值,所以让我们将它们都称为action
:
<button name="action" type="submit" class="admin_user" id="admin_user_promote" onclick="/admin_user.admin_user_promote" value="admin_user_promote">
<b>Make Selected User an Admin</b>
</button>
<button name="action" type="submit" class="delete_user" id="admin_user_demote" onclick="/admin_user.admin_user_demote" value="admin_user_demote">
<b>Make Selected User a regular user</b>
</button>
设置名称后,您可以检查它的值:
@auth.route('/admin_user', methods=['GET', 'POST'])
def example():
if request.method == 'POST':
action = request.form.get('action')
selected_user = request.form.get('user_search_admin')
if action == 'admin_user_promote':
admin_user_promote(selected_user)
elif action == 'admin_user_demote':
admin_user_demote(selected_user)
return render_template('example.html')
您需要更改 admin_user_promote
和 admin_user_demote
函数以接受 selected_user
,这样您就可以在函数中使用引用:
def admin_user_demote(user):
#update database, etc etc with `user`
如果您想要闪现消息(假设用户更新后它们会返回到home
页面,并且home
页面会查找闪现消息),您可能只想添加另一个返回用户名的函数 - 例如:
def resolve_username(user_id):
# get the username from the database, etc.
username = User.query.filter_by(id=user_id).first()
return username
然后调整您的 View 以符合我们的新规则:
@auth.route('/admin_user', methods=['GET', 'POST'])
def example():
if request.method == 'POST':
action = request.form.get('action')
selected_user = request.form.get('user_search_admin')
username = resolve_username(selected_user)
if action == 'admin_user_promote':
admin_user_promote(selected_user)
flash('{} promoted'.format(username))
elif action == 'admin_user_demote':
admin_user_demote(selected_user)
flash('{} demoted'.format(username))
else:
flash('Something odd happened!')
return redirect(url_for('home'))
return render_template('example.html')
关于python - 如何获取下拉菜单来激活 2 个不同的 python 代码,flask/sql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48689238/