Day 62

AWESOMee·2022년 4월 14일
0

Udemy Python Bootcamp

목록 보기
62/64
post-thumbnail

Udemy Python Bootcamp Day 62

Coffee & Wifi Project

Initial project


Adding a custom CSS file

{% block styles %}
{{super()}}
<link rel="stylesheet" href="{{url_for('.static', filename='css/styles.css')}}">
{% endblock %}


Displays all the data from the cafe-data.csv

<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>


Create a quick_form

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) }}


Add the data in 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해야하는 거였음


FINAL

https://gist.github.com/awesomekimn/7c803ba13347a86794c63272229ff66f

profile
개발을 배우는 듯 하면서도

0개의 댓글