Jinja2路线规范

时间:2016-12-20 02:54:46

标签: python flask jinja2

晚上好。 我正在使用Python-Flask API开发Politicians Wiki。 顾名思义,该平台的行为与维基百科类似,并且有一个标志功能来报告不正确的内容。 为了创建该功能,我创建了一个名为Flag的额外表格,并与我的所有webapp类相关联,如:政治家提案组织角色即可。基本上,所有可以标记为误导性信息的东西。

我将这些表链接为一对多关系。 1政治家有0 .. *旗帜 1提案有0 .. *标志等..

问题是当我尝试在一个页面中打印所有信息时,我需要按类别分隔标记,以便为每个类的单个页面获取不同的路径。

{% for flag in flags %}
                            <tr>
                                <td>{{flag.flagtitle}}</td>
                                <td>{{flag.flagreason}}</td>
                                <td></td>
                                <td><a href="/politician/{{ flag.politician }}"><span class="glyphicon glyphicon-pencil"></span></a></td>
                                <td><form action ="/delete_flag/{{ flag.idflag }}" method="POST">
                    <button><span class="glyphicon glyphicon-remove" type="submit" name="remove_levels" value="delete" class="fa fa-times"></span> delete</button>
                </form></td>
                            </tr>
                        {% endfor %}

在这里,我只能看到政治家们被标记为主题,并且只能获得该政治家的路线。旗帜信息,对吗?

如何解析我得到的标志以获得正确的课程路线?我应该重构路由并将ClassID(例如PoliticianID)添加到flag表中,然后转到

  

/ API /标记/ ID

我真的很困惑,实际上我不知道什么是最好的方法..

有什么好主意吗?

管理控制器(我看到所有已标记的内容)

@users_blueprint.route("/admin", methods=["GET", "POST"])
@login_required
def admin():
    form = SignupForm()
    flags = db.session.query(Flag).all()
    users = db.session.query(User).all()
    if (current_user.get_urole()) == "admin":
        if request.method == "POST":
            if form.validate() == False:
                return render_template('admin.html', form=form)
            else:
                newuser = User(form.first_name.data, form.last_name.data, form.email.data, form.password.data,
                               "member")
                db.session.add(newuser)
                db.session.commit()
                flash(u'Welcome to POLEX', 'info')
                return redirect(url_for('home.home'))

        elif request.method == "GET":
            return render_template("admin.html", users=users, form=form, flags=flags)
    else:
        return redirect(url_for('home.home'))

1 个答案:

答案 0 :(得分:0)

如果我正确理解您的问题,您就会问如何按类型对标记进行分组。最简单的方法可能是在控制器中按类型分隔标志,然后将该信息传递到模板中。

flags_by_type = {flag_type: [] for flag_type in flag_types}
for flag in flags:
    flags_by_type[flag.type].append(flag)
render(..., flags=flags_by_type)

然后,在模板中,您可以循环遍历标志类型,然后以嵌套方式循环遍历每种类型的标志。