晚上好。 我正在使用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'))
答案 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)
然后,在模板中,您可以循环遍历标志类型,然后以嵌套方式循环遍历每种类型的标志。