我正在调用Flask另一个Python文件中定义的Python函数,该函数会发送一个字符串,并将其分配给全局变量。然后tabPage.Controls.Add(geckoWebBrowser1);
将全局变量发送到HTML文件。
但是它给出了render_template
。我如何解决它?
TypeError: 'str' object is not callable
@app.route('/agricul', methods=["post"])
def agricul():
global summarry
summarry = check.summary()
print(summarry)
return render_template('summary.html', sum=summarry)
`
check.py
答案 0 :(得分:2)
此函数本身会“破坏”:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication41
{
public partial class Form1 : Form
{
DataTable dt = null;
public Form1()
{
InitializeComponent();
dt = new DataTable();
dt.Columns.Add("ID", typeof(int));
dt.Columns.Add("Parent_ID", typeof(int));
dt.Columns.Add("Name", typeof(string));
dt.Rows.Add(new object[] {1, 0, "Apple"});
dt.Rows.Add(new object[] {2, 0, "Pear"});
dt.Rows.Add(new object[] {3, 2, "Grapes"});
dt.Rows.Add(new object[] {4, 3, "Banana"});
TreeNode node = new TreeNode("Root");
treeView1.Nodes.Add(node);
int parentID = 0;
MakeTree(parentID, node);
treeView1.ExpandAll();
}
public void MakeTree(int parentID, TreeNode parentNode)
{
foreach(DataRow row in dt.AsEnumerable().Where(x => x.Field<int>("Parent_ID") == parentID))
{
string name = row.Field<string>("Name");
int id = row.Field<int>("ID");
TreeNode node = new TreeNode(name);
parentNode.Nodes.Add(node);
MakeTree(id, node);
}
}
}
}
调用def summary():
global summary
summary='hello world'
return summary
时,赋值summary()
将函数替换为字符串summary='hello world'
。
换句话说,您只能调用一次该函数,然后不再调用该函数。
目前尚不清楚为什么要使用全局变量,但是如果您急需一个全局变量,还需要重命名变量或函数。
一个更常见的实现看起来像
'hello world'
答案 1 :(得分:0)
您NSDecimalNumber
与check.py中的函数同名。我认为python与check.summary混淆,后者是一个字符串?