簡體   English   中英

Python Flask,錯誤“jinja2.exceptions.UndefinedError:‘str object’沒有屬性‘name’”

[英]Python Flask, Error "jinja2.exceptions.UndefinedError: 'str object' has no attribute 'name'"

我正在創建一個鍛煉應用程序,它顯示與不同肌肉群相關的不同鍛煉。 在我添加練習的頁面上,我想使用肌肉群從我的數據庫中對練習進行排序。 但是,當我運行應用程序並選擇編輯練習頁面時,我收到“jinja2.exceptions.UndefinedError: 'str object' has no attribute 'name'”錯誤

路線.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>

一個可能的原因是

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

給你一個字符串列表(假設.group是一個字符串)。 然后,模板執行

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

給你你看到的錯誤。 快速修復(或驗證這是問題所在)是刪除該.name

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM