我正在努力解决如何在我的应用中连接URL_for链接。 我有一个基本的骨架应用程序设置。
我希望建立一个在视图(MyView)中构建的函数(运行代码)的链接。
我基本上想要将一个变量(var1)传递给视图'myview / method2 / var1',并在ContactModelView中显示该链接。
由于
class MyView(BaseView):
route_base = "/myview"
@expose('/method2/<string:var1>')
@has_access
def fun_var(self, var1):
# go to function_file and run function with var1
param1, param2 = func_file.function(var1)
self.update_redirect()
return self.render_template('method3.html',
param1=param1,param2=param2, param3=prospects)
我的models.py文件包含以下内容:
class Contact(Model):
id = Column(Integer, primary_key=True)
name = Column(String(150), unique = True, nullable=False)
var1 = Column(String(150))
contact_group_id = Column(Integer, ForeignKey('contact_group.id'))
contact_group = relationship("ContactGroup")
def prospect(self):
return Markup(
'<a href="'url_for("What To Put here?MyView.fun_var doesn't work")'">prospect</a>')
def __repr__(self):
return self.name
然后我有观点:
class ContactModelView(ModelView):
datamodel = SQLAInterface(Contact)
label_columns = {'contact_group':'Contacts Group'}
list_columns = ['name','var1','contact_group', 'action']
show_fieldsets = [
(
'Summary',
{'fields':['name','var1','contact_group', 'prospect']}
)
]
答案 0 :(得分:1)
在关于BaseView的documentation中,我们看到了
它的构造函数会将你的暴露网址注册为蓝图
因此,请务必添加您创建的视图,以便注册蓝图&#39;。使用像
这样的东西appbuilder.add_view_no_menu(MyView())
您可以在控制台上运行fabmanager list-views
以确保您的视图已注册。
由于您的终端需要var1
参数,因此您必须将其提供给url_for
。这样的事情会起作用:
class Contact(Model):
var1 = Column(String(150))
...
def prospect(self):
return Markup(
'<a href="' + url_for('MyView.fun_var', var1=self.var1) + '">prospect</a>')