出于某种原因,该jsonify函数将我转换datetime.date为看似HTTP日期的内容.使用时如何保持日期yyyy-mm-dd格式jsonify?
test_date = datetime.date(2017, 4, 27)
print(test_date) # 2017-04-27
test_date_jsonify = jsonify(test_date)
print(test_date_jsonify.get_data(as_text=True)) # Thu, 27 Apr 2017 00:00:00 GMT
Run Code Online (Sandbox Code Playgroud)
正如评论中所建议的那样,使用jsonify(str(test_date))返回所需的格式.但是,请考虑以下情况:
test_dict = {"name": "name1", "date":datetime.date(2017, 4, 27)}
print(test_dict) # {"name": "name1", "date":datetime.date(2017, 4, 27)}
test_dict_jsonify = jsonify(test_dict)
print(test_dict_jsonify.get_data(as_text=True)) # {"date": "Thu, 27 Apr 2017 00:00:00 GMT", "name": "name1"}
test_dict_jsonify = jsonify(str(test_dict))
print(test_dict_jsonify.get_data(as_text=True)) # "{"date": datetime.date(2017, 4, 27), "name": "name1"}"
Run Code Online (Sandbox Code Playgroud)
在这种情况下,str()解决方案不起作用.
问题陈述
我正在开发一个在表格中显示项目列表的 Flask Web 应用程序。用户可以选择一行并点击一个Delete按钮来删除该项目。然而,在从数据库中删除项目之前,用户首先被路由到确认屏幕,其中显示了一些项目详细信息以及一个Confirm按钮。确认页面的 url 遵循以下模式:dashboard/confirm-delete/<id>实际删除页面的 url 遵循以下模式:dashboard/delete/<id>。有关admin/views.py更多详细信息,请参见下文。
当系统正常工作时,我遇到的问题是用户可以通过在地址栏中键入 来跳过确认页面dashboard/delete/<id>,其中<id>由实际项目 id 代替。
问题
有没有办法阻止用户访问,dashboard/delete/<id>除非他们先去dashboard/confirm-delete/<id>(确认屏幕)?或者,我的方法是否错误,是否有更好的方法可用?
当前代码:
dashboard.html选择一行并按下删除按钮时调用我页面中的函数:
$('#remove').click(function () {
var id = getId();
window.location.href="/dashboard/confirm-delete" + $.trim(id);
});
Run Code Online (Sandbox Code Playgroud)
确认按钮confirm-delete.html(删除确认页面):
<a class="btn btn-default" href="{{ url_for('admin.delete_item', id=item.id) }}" role="button">Confirm Delete</a>
Run Code Online (Sandbox Code Playgroud)
我的admins/views.py:
@admin_blueprint.route('dashboard/confirm-delete/<id>')
@login_required
@groups_required(['admin'})
def confirm_delete_item(id)
item = Item.query.get_or_404(id)
return render_template('admin/confirm-delete.html', item=item, title="Delete Item")
@admin_blueprint.route('dashboard/delete/<id>', methods=['GET', 'POST'])
@login_required
@groups_required(['admin'}) …Run Code Online (Sandbox Code Playgroud)