할일 리스트에 아직 어떠한 할일도 적혀있지 않다면, 어떻게 해야할까? 별도의 백엔드로직을 구성할 필요없이, index.html에서 템플릿언어의 조건문을 사용해서 위와 같은 화면을 구성할 수 있다.
{% extends 'base.html' %}
<!-- 헤드부분 -->
{% block head %}
<title>Task Master</title>
{% endblock %}
<!-- 바디부분 -->
{% block body %}
<div class="content">
<h1>도대체 무엇을 해야하나</h1>
//로직부분에서 index.html과 같이 렌더링한 tasks에 대한 조건문
//tasks에 아직 어떠한 할일도 담겨있지 않을 때 보여줄 화면
{% if tasks|length < 1 %}
<h4>할 일이 없습니다. 오늘은 제발 일 좀 하세요.</h4>
//tasks에 할일이 하나라도 담겨있다면 보여줄 화면
{% else %}
<table>
<tr>
<th>할일</th>
<th>저장한 시간</th>
<th>수정/삭제</th>
</tr>
{% for task in tasks %}
<tr>
<td>{{ task.content }}</td>
<td>{{ task.date_created.date() }}</td>
<td>
<a href="/update/{{task.id}}">Update</a>
<br>
<a href="/delete/{{task.id}}">Delete</a>
</td>
</tr>
{% endfor %}
</table>
//조건문 끝
{% endif %}
<form action="/" method="POST">
<input type="text" name="content" id="content">
<input type="submit" Value="Add Task">
</form>
</div>
{% endblock %}
템플릿언어의 조건문을 사용해 구현하면 된다. index.html과 같이 렌더링한 tasks를 체크한 뒤 tasks의 데이터에 따라 보여줄 화면을 다르게 구성하는 것이다. 참고로 tasks는 app.py에서 로직 구성시 만든 변수이다.
@app.route('/', methods=['POST', 'GET'])
def index():
if request.method == 'POST':
task_content = request.form['content']
new_task = Todo(content=task_content)
try:
db.session.add(new_task)
db.session.commit()
return redirect('/')
except:
return 'There was an issue adding your task'
else:
//바로 이 변수가 조건문의 기준으로 사용된다
tasks = Todo.query.order_by(Todo.date_created).all()
return render_template('index.html', tasks=tasks)
'Projects > Flask 할일리스트' 카테고리의 다른 글
#7. 프로젝트를 끝내며 (0) | 2021.05.22 |
---|---|
#5. 작성한 할일 수정하기 (0) | 2021.05.22 |
#4. 작성한 할일 삭제하기 (0) | 2021.05.22 |
#3. 할일 리스트를 저장하고, 이 리스트를 메인페이지에 띄워주기 (0) | 2021.05.22 |
#2. 메인화면 세팅 (0) | 2021.05.22 |