CS50 Finance点击Sell按钮后Flask模板语法错误求助
解决CS50 Finance Sell页面的jinja2.exceptions.TemplateSyntaxError错误
错误根源
你的sell.html模板中存在Jinja2语法错误:title块的起始标签使用了{$而非Jinja2标准的{%,导致模板解析器无法识别后续的{% endblock %}标签,从而抛出Encountered unknown tag 'endblock'异常。
修正步骤
1. 修复sell.html中的语法错误
将sell.html里的{$ block title %}替换为{% block title %},修正后的完整代码如下:
{% extends "layout.html" %} {% block title %} Sell Shares {% endblock %} {% block main %} <form action="/sell" method="post"> <div class="form-group"> <label for="symbol">Symbol</label> <select class="form-control" id="symbol" name="symbol"> <option value="">Select stock</option> {% for stock in stocks %} <option value="{{ stock.symbol }}">{{ stock.name }} ({{ stock.symbol }})</option> {% endfor %} </select> </div> <div class="form-group"> <label for="shares">Shares</label> <input class="form-control" id="shares" name="shares" placeholder="Number of shares" type="number"> </div> <button class="btn btn-primary" type="submit">Sell</button> </form> {% endblock %}
2. 修复app.py中的语法问题
你的app.py代码中,在register路由结束后、sell路由开始前有一个多余的单独字符c,这会导致Python语法错误,需要删除该行:
# 删除这一行单独的"c" c @app.route("/sell", methods=["GET", "POST"]) @login_required def sell(): # ... 原有代码
验证修复
完成上述修改后,重启Flask应用,访问Sell页面即可正常加载,点击Sell按钮也能正常提交表单。
内容的提问来源于stack exchange,提问作者Endless Paradox
相关产品推荐
相关产品推荐

