gpt4 book ai didi

python - 如何使用 Flask 可插入 View 重用查看和编辑代码

转载 作者:行者123 更新时间:2023-12-01 05:49:02 25 4
gpt4 key购买 nike

我正在遵循此处的示例代码:http://flask.pocoo.org/docs/views/#pluggable-views

我认为这段代码并不完整,我无法让它工作并在其基础上进行构建。

我正在尝试重用以下功能的代码:

添加数据库条目

@app.route('/add/category/', methods=['GET', 'POST'])
def addCategory():
form = forms.AddCategory()
if form.validate_on_submit():
name = form.name.data
database.addCategory(name)
return redirect('/view/categories/')
return render_template('add-category.html', form = form)


@app.route('/add/revision/', methods=['GET', 'POST'])
def addRevision():
form = forms.AddRevision()
if form.validate_on_submit():
name = form.name.data
version = form.version.data
database.addRevision(name, version)
return redirect('/view/revisions/')
return render_template('add-revision.html', form = form)

编辑数据库条目

@app.route('/edit/category/<category>', methods=['GET', 'POST'])
def editCategory(category):
form = forms.AddCategory()
form.name.data = category
if form.validate_on_submit():
newName = form.name.data
database.editCategory(name = category, newName = newName)
#view single category?
return redirect('/view/categories/')
return render_template('edit-category.html', category = category, form = form)

@app.route('/edit/revision/<name>/<version>', methods=['GET', 'POST'])
def editRevision(name, version):
form = forms.AddRevision()
form.name.data = name
form.version.data = version
if form.validate_on_submit():
newName = form.name.data
newVersion = form.version.data
database.editRevision(name, version, newName, newVersion)
return redirect('/view/revisions/')
return render_template('edit-revision.html', name = name, version = version, form = form)

这是我当前的代码

class ListView(View):
def get_template_name(self):
raise NotImplementedError()
def render_template(self, context):
return render_template(self.get_template_name(), **context)
def dispatch_request(self):
context = {'objects': self.get_objects()}
return self.render_template(context)

class CategoryView(ListView):
def get_template_name(self):
return 'categories.html'
def get_objects(self):
return models.Category.query.all()

app.add_url_rule('/categories', view_func=RenderTemplateView.as_view('categories', template_name='categories.html'))

我在app.add_url_rule中哪里指定使用CategoryView类?

最佳答案

问题在于文档在这两个代码块之间切换上下文 - 使用 RenderTemplateView 的第二组示例并不意味着“与”之前绘制 ListView 的条目“一致” >.

app.add_url_rule('/categories', view_func=RenderTemplateView  # ... snip ...

应该是:

app.add_url_rule('/categories', view_func=CategoryView.as_view("category"))

那个creates a function当调用时,它将创建您的 CategoryView 实例并调用它的 dispatch_request方法。

关于python - 如何使用 Flask 可插入 View 重用查看和编辑代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15073727/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com