Prediction
모델 목록이 있습니다. 양식에 바인딩하고 다시 게시 할 수 있도록하고 싶습니다. 게시물 이 양식에 바인딩하는 각 항목에 대한 Prediction
모델 id
필드 와 홈 / 어웨이 점수를 연결하도록 양식을 구성하려면 어떻게해야합니까?
전망
@app.route('/predictor/',methods=['GET','POST'])
@login_required
def predictions():
user_id = g.user.id
prediction= # retrieve prediction
if request.method == 'POST':
if form.validate() == False:
flash('A score is missing, please fill in all predictions')
render_template('predictor.html', prediction=prediction, form=form)
else:
for pred in prediction:
# store my prediction
flash('Prediction added')
return redirect(url_for("predictions"))
# display current predictions
elif request.method == 'GET':
return render_template('predictor.html', prediction=prediction, form=form)
형태
class PredictionForm(WTForm):
id = fields.IntegerField(validators=[validators.required()], widget=HiddenInput())
home_score = fields.TextField(validators=[validators.required()])
away_score = fields.TextField(validators=[validators.required()])
주형
<form action="" method="post">
{{form.hidden_tag()}}
<table>
{% for pred in prediction %}
<tr>
<td>{{pred.id}}</td>
<td>{{form.home_score(size=1)}}</td>
<td>{{form.away_score(size=1)}}</td>
</tr>
{% endfor %}
</table>
<p><input type="submit" value="Submit Predictions"></p>
</form>
내 데이터를에서 올바르게 바인딩 할 수 없습니다 POST
. 게시 데이터에 모든 필수 필드 가 누락되어 필수 유효성 검사기가 계속 실패 합니다.
예측 목록의 항목에 바인딩 할 하위 양식이 필요합니다.
설명하신 양식을 사용하면 단일 예측 만 제출할 수 있습니다. 반복 가능한 예측을 바인딩하고 각각에 대한 홈 앤 어웨이 예측을 원하는 것처럼 보이기 때문에 불일치가있는 것 같습니다. 사실, 그것은 결코 id
필드를 다시 게시하지 않을 것 입니다. 이로 인해 항상 양식 유효성 검사가 실패합니다. 나는 당신이 원하는 것은 하위 양식 목록이라고 생각합니다. 이렇게 :
# Flask's form inherits from wtforms.ext.SecureForm by default
# this is the WTForm base form.
from wtforms import Form as WTForm
# Never render this form publicly because it won't have a csrf_token
class PredictionForm(WTForm):
id = fields.IntegerField(validators=[validators.required()], widget=HiddenInput())
home_score = fields.TextField(validators=[validators.required()])
away_score = fields.TextField(validators=[validators.required()])
class PredictionListForm(Form):
predictions = FieldList(FormField(PredictionForm))
뷰는 다음 라인을 따라 무언가를 반환해야합니다.
predictions = # get your iterable of predictions from the database
from werkzeug.datastructures import MultiDict
data = {'predictions': predictions}
form = PredictionListForm(data=MultiDict(data))
return render_template('predictor.html', form=form)
양식을 다음과 같이 변경해야합니다.
<form action='my-action' method='post'>
{{ form.hidden_tag() }}
{{ form.predictions() }}
</form>
이제이은을 인쇄 할 <ul>
로 <li>
를 Fieldlist가 무엇을 먹으 렴 때문에 당 항목을 선택합니다. 스타일을 지정하고 표 형식으로 만드는 것은 사용자에게 맡기겠습니다. 약간 까다로울 수 있지만 불가능하지는 않습니다.
POST에서 각 예측의 홈 및 원정 점수가 포함 된 양식 데이터 사전을 얻을 수 있습니다 id
. 그런 다음 이러한 예측을 SQLAlchemy 모델에 다시 바인딩 할 수 있습니다 .
[{'id': 1, 'home': 7, 'away': 2}, {'id': 2, 'home': 3, 'away': 12}]
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다