我正在使用Pythonanywhere开发我的代码。我正在尝试修改和扩展课程中的一些代码。
我正在修改从数据库打印记录的代码,以便从每条记录中提取特定的字段值,然后在数据库中找到该字段的所有值的最大值。
我已经在flask_app.py中复制并重命名了以下代码,该代码只获取数据库中的所有记录
class ViewController: UIViewController {
var translation: CGPoint!
var startPosition: CGPoint! //Start position for the gesture transition
var originalHeight: CGFloat = 0 // Initial Height for the UIView
var difference: CGFloat!
override func viewDidLoad() {
super.viewDidLoad()
originalHeight = dragView.frame.height
}
@IBOutlet weak var dragView: UIView! // UIView with UIPanGestureRecognizer
@IBOutlet var gestureRecognizer: UIPanGestureRecognizer!
@IBAction func viewDidDragged(_ sender: UIPanGestureRecognizer) {
if sender.state == .began {
startPosition = gestureRecognizer.location(in: dragView) // the postion at which PanGestue Started
}
if sender.state == .began || sender.state == .changed {
translation = sender.translation(in: self.view)
sender.setTranslation(CGPoint(x: 0.0, y: 0.0), in: self.view)
let endPosition = sender.location(in: dragView) // the posiion at which PanGesture Ended
difference = endPosition.y - startPosition.y
var newFrame = dragView.frame
newFrame.origin.x = dragView.frame.origin.x
newFrame.origin.y = dragView.frame.origin.y + difference //Gesture Moving Upward will produce a negative value for difference
newFrame.size.width = dragView.frame.size.width
newFrame.size.height = dragView.frame.size.height - difference //Gesture Moving Upward will produce a negative value for difference
dragView.frame = newFrame
}
if sender.state == .ended || sender.state == .cancelled {
//Do Something
}
}
}
然后在listmaxidv2.html模板中进行渲染,我试图隔离第一个字段的每个值。我已经尝试了很多东西,我的最后一次尝试如下,但我不确定javascript是否正在执行(是的,这有点乱)。有没有明显的东西可以说明为什么我没有进入记录的第一个字段?
@app.route('/listmaxidv2')
def listmaxidv2():
with sqlite3.connect("MyFilms2.db") as conn:
cursor = conn.cursor()
sql = """SELECT * FROM tblFilms"""
cursor.execute(sql)
rows = cursor.fetchall()
return render_template("/listmaxidv2.html", rows=rows)
答案 0 :(得分:2)
你误解了Jinja的工作方式...... Jinja在python库中,因此,它执行服务器端并且javascript代码执行客户端所以你可以&#39当你在这里尝试做的时候,把两者混合起来......
好消息是你可以像这样简单地调整......
<!doctype html>
<html>
<link rel="stylesheet" href="static/filmv2.css">
<script>
var raw_data = {{ rows|tojson }};
function getids(in_var){
return isNaN(in_var) ? "invalid film id" + in_var : "Valid film id" + in_var;
}
var func_ret = 0
raw_data.forEach(function(row) {
func_ret = getids(row);
document.getElementById("id_fdbk").innerHTML = func_ret;
});
document.getElementById("testHTML").innerHTML = "Test text to HTML id";
</script>
<body>
<h1> Find maximum film ID </h1>
<h2> Generate next free film ID </h2>
<input type='button' value='Go' onclick='getids(017)';'>
<p id="id_fdbk"></p>
<p id="testHTML"></p>
</body>
</html>
我无法弄清楚你上面要做的事情。例如。此代码将覆盖列表中每个项目的相同HTML元素。我怀疑你只是想让一些东西发挥作用......
通过使用Jinja的tojson过滤器,您可以告诉Jinja将此信息传递到您的模板中,以便javascript可以将其用作本机对象。
请注意,如果您正在使用 Flask&lt; 0.10 您还需要safe
过滤器,就像它们在上面链接的文档中所示。 (即var raw_data = {{ rows|tojson|safe }};
)