python - 在烧瓶应用程序中调用了错误的类视图方法
问题描述
我在我的烧瓶应用程序中看到了这种奇怪的行为,我为一个视图生成了一个 URL,只是让它调用另一个视图。试图追踪问题,但无法解决问题。
这里是类视图:
@admin_blueprint.route('/admin/<string:manage_admins>', methods=['GET', 'POST'])
@login_required
@fresh_login_required
def admin_manage_admins(manage_admins, admin_id=None):
"""
Used to managed all the registered
admins by the super admin or the developer
"""
# TODO finish this
admin = Admin()
form = AllAdminsProfile(object=admin)
include_name = 'manage_admins'
admins = Admin.query.all()
if form.validate_on_submit():
try:
# TODO update the edited admin using 'id'
return redirect(url_for('admin.admin', admin_id=admin_id))
except TemplateError as err:
print(err)
return render_template('admin.html', page_title='Admin Dashboard', dashboard_name='Haiflytrap Dashboard', include_name=include_name, form=form, admins=admins)
# INFO Optional route that might be included in the future
# @admin_blueprint.route('/admin/<string:customers_orders>', defaults={'order_id': ''}, methods=['GET', 'POST'])
@admin_blueprint.route('/admin/<string:customers_orders>', methods=['GET'])
@login_required
def customer_orders(customer_orders):
# order = CustomerOrder()
# form = OrderForm(object=order)
if customer_orders == 'customers_orders':
try:
orders = CustomerOrder.query.get()
include_name = 'customers_orders'
# if customers_orders_form.validate_on_submit():
# # TODO add query to update on item
# orders = CustomerOrder.query.get(order_id).first_or_404()
# customers_orders_form.populate_obj(object=orders)
# db.session.commit()
# return redirect(url_for('admin.admin'))
return render_template('admin.html', page_title='Admin Dashboard', dashboard_name='Haiflytrap Dashboard', include_name=include_name, orders=orders)
except TemplateError as err:
print(err)
应该调用def customer_orders()
但它调用的 html 链接def admin_manage_admins()
:
<a href="{{ url_for('admin.customer_orders', customers_orders='customers_orders') }}" class="list-group-item list-group-item-action my-btn-secondary">Customer Orders</a>
这是admin.html
使用的模板:
{% extends 'admin_layout.html' %}
{% block content %}
{% if include_name == 'dashboard' %}
{% include 'dash_landing.html' %}
{% endif %}
{% if include_name == 'manage_admins' %}
{% include 'manage_admin.html' %}
{% endif %}
{% if include_name == 'profile' %}
{% include 'profile.html' %}
{% endif %}
{% if include_name == 'password_update' %}
{% include 'password_update.html' %}
{% endif %}
{% if include_name == 'customers_orders' %}
{% include 'customers_orders.html' %}
{% endif %}
{% endblock content %}
解决方案
我说它是因为你的 url 是相同的——
它们都解析为admin/some_string
所以当输入 url 时,flask 只会解析第一个。
如果您将客户订单网址更改为:
@admin_blueprint.route('/admin/customer-orders/<string:customers_orders>', methods=['GET'])
它应该有所作为
推荐阅读
- python - 在 Pandas Dataframe 中读取嵌套的 json 文件
- python - Django - 如何在身份验证期间返回 JSON 响应而不是 HTML?
- crystal-lang - 启动幸运服务器的问题
- laravel - Laravel - 如何减去两个字段的计数
- javascript - 带有语言翻译功能的 React js 网页(手动)
- windows - 是否可以使用 Robotframework-FlaUI 在 Docker 容器中对 Windows 应用程序(WPF 或 WinForms)进行 GUI 测试?
- c# - 如何使用 C# selenium 在一个浏览器中打开多个选项卡并执行每个任务
- css - 如何在 wp post 中垂直居中图像
- buffer-overflow - 如何使用 NOP sled 绕过 ASLR
- asp.net - 本地 IIS 和 IIS Express 处理根路径的方式不同