{% block styles %}
{{super()}}
<link rel="stylesheet" href="{{url_for('.static', filename='css/styles.css')}}">
{% endblock %}
<thead>
<tr>
{% for header in cafes[0]: %}
<th scope="col">{{ header }}</th>
{% endfor %}
</tr>
</thead>
<tbody>
{% for item in list: %}
{% if item == list[1]: %}
<td><a href="{{ item }}">Maps Link</a></td>
{% else: %}
<td>{{ item }}</td>
{% endif %}
{% endfor %}
</tbody>
from wtforms import StringField, SubmitField, SelectField
from wtforms.validators import DataRequired, URL
class CafeForm(FlaskForm):
cafe = StringField('Cafe name', validators=[DataRequired()])
location_url = StringField('Cafe Location in Google Maps (URL)', validators=[DataRequired(), URL()])
opening_time = StringField('Opening Time e.g. 8AM', validators=[DataRequired()])
closing_time = StringField('Closing Time e.g. 5:30PM', validators=[DataRequired()])
coffee_rating = SelectField('Coffee Rating', choices=['☕️', '☕☕️️', '☕☕☕', '☕☕☕☕', '☕☕☕☕☕'], validators=[DataRequired()])
wifi_rating = SelectField('Wifi Strength Rating', choices=['✘', '💪', '💪💪', '💪💪💪', '💪💪💪💪', '💪💪💪💪💪'], validators=[DataRequired()])
power_outlet_rating = SelectField('Power Socket Availability', choices=['✘', '🔌', '🔌🔌', '🔌🔌🔌', '🔌🔌🔌🔌', '🔌🔌🔌🔌🔌'], validators=[DataRequired()])
submit = SubmitField('Submit')
@app.route('/add', methods=["GET", "POST"])
def add_cafe():
form = CafeForm()
if form.validate_on_submit():
print(True)
return render_template('add.html', form=form)
{% import "bootstrap/wtf.html" as wtf %}
{{ wtf.quick_form(form, novalidate=True) }}
cafe-data.csv
form.cafe
값이 <input id="cafe" name="cafe" required type="text" value="Ozone Coffee">
로 출력되는데 여기에서 value
값만 추출하는데 실패함..
id
는 추출이 되는데 왜 value
는 안돼,,
...
value
가 아니라 data
로 추출해야 하는거였다... 정말 간단하군요....
from flask import Flask, render_template, redirect, url_for
@app.route('/add', methods=["GET", "POST"])
def add_cafe():
form = CafeForm()
if form.validate_on_submit():
with open('cafe-data.csv', "a") as csv_file:
csv_file.write(f"\n{form.cafe.data},"
f"{form.location_url.data},"
f"{form.opening_time.data},"
f"{form.closing_time.data},"
f"{form.coffee_rating.data},"
f"{form.wifi_rating.data},"
f"{form.power_outlet_rating.data}")
return redirect(url_for('cafes'))
return render_template('add.html', form=form)
/add
에서 값 입력후 submit하면 return render_template
가 아니라 url return redirect
해야하는 거였음
https://gist.github.com/awesomekimn/7c803ba13347a86794c63272229ff66f