首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python Flask,错误"jinja2.exceptions.UndefinedError:‘字符串对象’没有属性‘名称’“

Python Flask,错误"jinja2.exceptions.UndefinedError:‘字符串对象’没有属性‘名称’“
EN

Stack Overflow用户
提问于 2020-04-01 23:43:36
回答 1查看 1K关注 0票数 0

我正在创建一个运动应用程序,它显示与不同肌肉群相关的不同运动。在我添加练习的页面上,我想使用肌群对我的数据库中的练习进行排序。然而,当我运行应用程序并选择编辑练习页面时,我得到"jinja2.exceptions.UndefinedError:'str object‘has no attribute 'name'“错误

routes.py

代码语言:javascript
复制
@exercises.route('/eex', methods=['GET', 'POST'])
@exercises.route('/eex/<mg>', methods=['GET', 'POST'])
def eex(mg=None):
    ex = Exercises.query.order_by(Exercises.name.asc())
    mgroup = [mg.group for mg in Musclegroup.query.all()]
    if mg is not None:
        ex = [e.ex.order_by(Exercises.name.asc()) for e in Musclegroup.query.filter_by(group=mg)][0]

    form = AddExerciseForm()
    form.musclegroup_id.choices = [(m.id, m.group.title()) for m in Musclegroup.query.all()]
    if form.validate_on_submit():
        image_file1 = save_picture(form.image1.data)
        image_file2 = save_picture(form.image2.data)
        ex = Exercises(
            name=form.name.data,
            image1=image_file1,
            image2=image_file2,
            details=form.details.data,
            musclegroup_id=form.musclegroup_id.data
            )
        db.session.add(ex)
        db.session.flush()
        new_id = ex.id
        db.session.commit()
        flash('Exercise successfully added' 'success')
        return redirect(url_for('exercises.eex'))
    return render_template('exercises/eex.html', title='Edit Exercises', ex=ex, mgroup=mgroup, form=form)

Html

代码语言:javascript
复制
<div class="col-md-4">
  <!-- Search Widget -->
  <div class="panel panel-default">
    <div class="panel-heading"><b>Muscle Groups</b></div>
    <div class="panel-body">
      <ul class="list-group">
        <li class="list-group-item">
            <a href="{{ url_for('exercises.eex') }}">All</a>
        </li>
        {% for group in mgroup %}
        <li class="list-group-item">
            <a href="{{ url_for('exercises.eex', mg=group) }}">{{ group.name() }}</a>
        </li>
        {% endfor %}
      </ul>
    </div>
  </div>

</div>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-02 00:32:43

一个可能的原因是

代码语言:javascript
复制
mgroup = [mg.group for mg in Musclegroup.query.all()]

为您提供了一个字符串列表(假设.group是一个字符串)。然后,该模板执行

代码语言:javascript
复制
{% for group in mygroup %}
    {{ group.name }}

给你你所看到的错误。最快的解决方法(或确认这就是问题所在)是删除.name

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60974872

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档