我正在使用Flask框架創建一個非常簡單的應用程序。我一直在順利進行,直到我爲Employee模型創建編輯/更新路線。我想要做的是讓員工更新他們的信息,當他們點擊提交時,sql_alchemy會發揮它的魔力。我遇到的問題是我的編輯網址正在打破它在手邊工作的位置。我在我的應用程序被戳,但我似乎無法得到它work.This是相關的代碼爲我編輯/更新操作:爲什麼我的編輯/更新路線中斷?
@app.route('/edit_employee/<id>', methods=['GET','PUT'])
def edit_employee(id):
if request.method == 'GET':
employee = Employee.query.get(id)
return render_template('edit.html', employee=employee)
else:
existing_employee = Employee.query.get(id)
updated_employee = Employee(request.form['name'], request.form['title'],
request.form['email'], request.form['department'])
file = request.files['profile_image']
if file and allowed_file(file.filename):
filename = secure_filename(file.filename)
filename = updated_employee.name
# Destroy the old image first
os.remove(os.path.join(app.config['UPLOAD_FOLDER'], filename))
file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
existing_employee = updated_employee
db.session.commit()
return redirect(url_for('all_employees'))
這裏是一個的layout.html文件。我懷疑問題位於我的form_action塊,但我不確定。我只是粘貼我的HTML視圖的一部分(它本質上是一個具有屬性的表單)。
<body>
<div>
<form{% block form_action %}{% endblock %}>
<h2>{% block h2 %}{% endblock %}</h2>
<div class="control-group">
<div class="controls">
<label>Name</label>
<input type="text" id="name" name="name"
placeholder="Specify name" value="{{ request.form.name }}"
required>
.............
我編輯觀點:
{% extends "layout.html" %}
{% block h2 %}Edit a Blackduck employee{% endblock %}
{% block form_action %}action="{{ url_for('edit_employee') }}" enctype=multipart/form-data method=post class="form-horizontal"{% endblock %}
{% block submit %}Update{% endblock %}
我一直在使用Rails和Sinatra的工作有一段時間了,我根本就沒有用瓶的錯誤渲染。對於這個錯誤BuildError: ('edit_employee', {}, None)
我不能確切地說出與Rails不同的是哪一行是問題。幫助將不勝感激。
你'edit_employee'函數有一個名爲參數'id'但你不傳遞任何參數,當你調用' url_for'。 – dirn