我正在尝试为帖子创建类别。最终结果应该是用户在尝试发布时,他们选择一个类别,帖子属于该类别,因此可以在那里编入索引。例如,他们将继续使用example.com/category/Flask,他们会找到所有具有Flask类别的帖子。我在post模型中添加了category_id和category,然后创建了一个带有id和name的Category模型。然后创建了一个表单,以便我可以向类别表添加类别,以便用户可以开始为他们的帖子选择类别。对我有用的是我可以创建类别,在发布时选择它们,当我查看数据库表时,我可以看到这些帖子分配了类别。所以我现在要做的是为/ category /创建一个视图,我不知道该怎么做。
class CategoryForm(Form):
name = StringField('Category name', validators=[DataRequired()])
submit = SubmitField('Submit')
我创建了一个CategoryForm
{% extends "base.html" %}
{% import "bootstrap/wtf.html" as wtf %}
{% import "_macros.html" as macros %}
{% block title %}Flasky{% endblock %}
{% block page_content %}
{{ wtf.quick_form(form) }}
{% endblock %}
Category.html
@main.route('/add_category', methods=['GET', 'POST'])
def add_category():
form = CategoryForm()
if form.validate_on_submit():
category = Category(name=form.name.data)
db.session.add(category)
flash('A confirmation email jas been sent you.')
return redirect(url_for('main.index'))
return render_template('add_category.html', form=form)
分类视图
def enabled_categories():
return Category.query.all()
class PostForm(Form):
body = PageDownField("What's on your mind?", validators=[DataRequired()])
category = QuerySelectField('Category', query_factory=enabled_categories,
allow_blank=True)
submit = SubmitField('Submit')
然后在添加类别后,我用
编辑了PostForm@main.route('/category/<name>')
def view_posts_in_category(name):
name = Category.query.filter_by(name=name)
return render_template('category.html', name=name)
这就是我创造的路线。
Iterator iterator = reqErrors.iterator();
while(iterator.hasNext()){
sb.append(iterator.next().getMessage() + "\n");
}
现在在category.html'category / Flask'中如何显示Flask类别下的所有帖子?例如{{category.post}}?我该怎么用?
答案 0 :(得分:2)
你快到了。您需要做的是对属于所选类别的帖子运行查询并将其添加到模板。它会是这样的:
@main.route('/category/<name>')
def view_posts_in_category(name):
cat = Category.query.filter_by(name=name).first_or_404()
return render_template('category.html', name=name, posts=cat.posts)