Python 2.7 如何将值传递给可插入视图?

Python 2.7 如何将值传递给可插入视图?,python-2.7,flask,Python 2.7,Flask,我正在尝试实现一个模板,用于添加视图、添加和编辑带有可插入视图的网页。如何使用url值,如 这就是我试图翻译成可插入视图的代码 @app.route('/edit/category/<category>', methods=['GET', 'POST']) def editCategory(category): form = forms.AddCategory() form.name.data = category if form.validate_on_su

我正在尝试实现一个模板,用于添加视图、添加和编辑带有可插入视图的网页。如何使用url值,如

这就是我试图翻译成可插入视图的代码

@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/category/',方法=['GET','POST'])
def编辑类别(类别):
form=forms.AddCategory()
form.name.data=类别
if form.validate_on_submit():
newName=form.name.data
database.editCategory(name=category,newName=newName)
#查看单个类别?
返回重定向(“/view/categories/”)
返回呈现模板('edit-category.html',category=category,form=form)
可插入视图代码

class ListView(View):

    def getTemplate_name(self):
        raise NotImplementedError()

    def render_template(self, context):
        return render_template(self.get_template_name(), **context)

    def dispatch_request(self):
        context = self.get_context()
        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()

    def get_form(self):
        return forms.AddCategory()

    def get_context(self):
        return {'categories': self.get_objects(), 'form': self.get_form()}

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

class EditCategory(ListView):

    def get_template_name(self):
        return 'edit-category.html'

    def get_form(self, category):
        form = forms.AddCategory()
        form.name.data = category
        return form

    def get_context(self):
        return {'form': self.get_form()}

app.add_url_rule('/edit/category/<category>', view_func=EditCategory.as_view('category'))
类列表视图(视图):
def getTemplate_名称(自身):
引发未实现的错误()
def render_模板(自身、上下文):
返回渲染模板(self.get\u template\u name(),**上下文)
def调度请求(自我):
context=self.get_context()
返回self.render_模板(上下文)
类类别视图(列表视图):
def get_模板_名称(自身):
返回“categories.html”
def get_对象(自身):
return models.Category.query.all()
def get_表格(自我):
返回表单。AddCategory()
def获取上下文(自身):
返回{'categories':self.get_objects(),'form':self.get_form()}
app.add_url_规则('/view/categories',view_func=CategoryView.as_视图('category'))
类EditCategory(列表视图):
def get_模板_名称(自身):
返回“edit category.html”
def get_表格(自我、类别):
form=forms.AddCategory()
form.name.data=类别
报税表
def获取上下文(自身):
返回{'form':self.get_form()}
app.add_url_规则('/edit/category/',view_func=EditCategory.as_view('category'))

您需要覆盖
EditCategory
类中的
dispatch\u request
方法,因为此方法具有传递给它的url值

class EditCategory(View):

    ...

    def get_context(self, category):
        return {'form': self.get_form(category)}

    def dispatch_request(self, category):
        context = self.get_context(category)
        return self.render_template(context)

app.add_url_rule('/edit/category/<category>', view_func=EditCategory.as_view('category'))
class编辑类别(视图):
...
def get_上下文(自身、类别):
返回{'form':self.get_form(category)}
def调度请求(自身、类别):
上下文=自身。获取上下文(类别)
返回self.render_模板(上下文)
app.add_url_规则('/edit/category/',view_func=EditCategory.as_view('category'))
顺便说一句,我认为您最好使用原始的装饰视图函数,在这种情况下,
viewcontegory
editcontegory
功能之间几乎没有共同点