繁体   English   中英

FLASK/PYTHON - 在 Flask 应用程序中添加删除线样式到待办事项列表项

[英]FLASK/PYTHON - Add strikethrough styling to todo list item in Flask app

我有一个待办事项列表,我可以在其中切换项目(标题)完成/未完成。 当我单击更新按钮以将项目标记为完成时,我想添加删除线。 我很高兴将它包装在数据库中的标签中,然后在我的页面上呈现它

下面是我的尝试,我可以点击按钮并将项目包装进去,但我无法在真/假之间切换以删除它只是不断添加它们的标签。

应用程序.py

from flask import Flask, Blueprint, render_template, request, redirect, url_for, current_app
from flask_sqlalchemy import SQLAlchemy
from app import app

todoapp = Blueprint("todoapp", __name__, static_folder="static", template_folder="templates")

app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///db.sqlite'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db = SQLAlchemy(app)

class Todo(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(100))
    complete = db.Column(db.Boolean)

@todoapp.route("/update/<int:todo_id>")
def update(todo_id):
    todo = Todo.query.filter_by(id=todo_id).first()
    todo.complete = not todo.complete #toggle true/false for complete
    if todo.complete == False:
        todo.title = "<del>" + todo.title + "</del>" # add strikethrough tags to title
        db.session.commit()
    else
    db.session.commit()
    return redirect(request.referrer)

html

  {% for todo in todo_list %}
  <div class="ui segment">
      <p class=""ui big header"> {{todo.id}} | {{todo.title}}</p>
      {% if todo.complete == False %}
      <span class="ui grey label"> Not Completed </span>
      {% else %}
      <span class="ui green label"> Completed </span>
      {% endif %}
      <a class = "ui blue button" href="/admin/update/{{ todo.id }}">Update</a>
  </div>
  {%endfor %}

1 - 不要使用filter_by(id=todo_id).first()使用get(todo_id)

2 - if 语句不完整

if not todo.complete:
    todo.title = "<del>" + todo.title + "</del>" # add strikethrough tags to title
    db.session.commit()
else:
    # remove the <del> tag
    db.session.commit()

3 - 你不应该这样做,在 html 中添加标签

<p class=""ui big header"> {{todo.id}} |

{% if not todo.complete %}
<del>
{% endif %}

{{todo.title}}

{% if not todo.complete %}
</del>
{% endif %}

</p>

这不是最好的方法,我建议您从数据库中获取并稍后将结果处理到 html,并且在标记为未完成时不要使用标签更新标题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM