Pythonのフラスコは、エラー「jinja2.exceptions.UndefinedErrorは 『strのオブジェクトは、』 『name』を何の属性を持っていません」

Xandeeer:

私はそれが別の筋群に関連したさまざまなエクササイズを示しエクササイズアプリを作成しています。私は演習を追加]ページで、私は筋肉群を使用して、私のデータベースから演習をソートしたいと思います。私はアプリを実行して、編集の練習ページを選択した場合しかし、私は「jinja2.exceptions.UndefinedErrorを 『strのオブジェクト』には、属性 『名前』がありません」取得エラー

routes.py

@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

<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>
デイブW.スミス:

考えられる原因は、ということです

mgroup = [mg.group for mg in Musclegroup.query.all()]

(と仮定するとあなたの文字列のリストを与えている.group文字列です)。その後、テンプレートはありません

{% for group in mygroup %}
    {{ group.name }}

あなたが見ているエラーを与えます。クイックフィックス(またはそれが問題だという検証が)それを削除することです.name

おすすめ

転載: http://10.200.1.11:23101/article/api/json?id=383784&siteId=1