我已经浏览了本网站的其他问题,但是他们都没有我想要的答案,因为大多数都有jQuery,JSON,AJAX的代码(如果我可以在下面的JavaScript函数中实际使用它,我会使用它,或尝试下载一些文件/程序/框架/软件包来完成它,比如Flask,TkInter或Django,我都无法使用。
我需要这样做而不需要额外的文件。
所以我要做的是获取一个名为“删除”的HTML按钮,在点击时删除另一个名为gallery.cgi的页面上的图像,“取消”只需点击即可重定向到gallery.cgi。 main()这样做但我不能在HTML / JavaScript代码中调用它。我需要在单击“删除”时才调用main()。
这是我试图在JavaScript中运行的函数,main()使用名为test_shelf(存储图像目录)和filename.db(存储文件名)的数据库文件(用于持久存储)。使用它,它会删除存储在db文件中的最后一个图像。
import cgi, os
import cgitb; cgitb.enable()
import shelve
images = shelve.open('test_shelf.db', writeback = True)
imageTitle = "Armory" # Title of image being deleted
def main():
db = shelve.open('filename.db', writeback = True)
try:
if db['key']:
alist = db['key'] # read
_filename = alist[-1] # last element of list
images.pop(_filename, None)
alist.remove(_filename)
db['key'] = alist # writeback
if os.path.exists('pictures/' + _filename): # pictures is where I store the images, so I need to delete them.
os.remove('pictures/' + _filename)
finally:
db.close()
这是我想在其中调用python函数的JavaScript函数。
function deletePicture() {
// Call main() here, so only clicking "Delete" button can delete an image
location.href='gallery.cgi';
}
这是HTML中的代码,它调用了deletePicture()OnClick。名为Delete的按钮在click上调用deletePicture(),它应调用main(),它将删除存储在db中的最后一个图像,然后重定向到gallery.cgi。
<p>Are you sure? You want to delete picture [ <b>"""
print imageTitle
print """</b> ].</p>
<input type = "button" value = "Delete" onClick = "return deletePicture()"/>
<input type = "button" value = "Cancel" onClick = "location.href='gallery.cgi';"/>
请注意,所有这些都在同一个文件(delete.cgi)中,这是一个Python CGI。所有HTML / JavaScript代码都是由python代码打印的。 (我不能创建具有main()代码的另一个文件(.py),然后在delete.cgi中调用它,我只允许使用一个.cgi文件来执行删除。)
答案 0 :(得分:0)
我认为您可以通过将删除输入连接到gallery.cgi / main /然后执行os.environs ['PATH']作为CGI文件中的方法来调用main。
HTML:
tcp_make_synack()
Python(类似):
<input type = "button" value = "Delete" onClick = "location.href='gallery.cgi/main/'"/>
如果这是他们执行的唯一功能,您也可以用链接和href替换其中任何一个输入。您还需要检查os.environs ['PATH']是否是可用的运行方法。