我在編寫一個簡單的python腳本,如果在localhost上啓動(使用apache),它將生成一個html頁面。生成HTML頁面的Python腳本
我的劇本是這樣的(test.py):
#!/usr/bin/python
# -*- coding: utf-8 -*-
import cgitb
cgitb.enable()
import cgi
form = cgi.FieldStorage()
print "Content-type: text/html\n\n"
x="hello"
y="world"
f= open('my.html', 'r').read()
print f.format(x=val1, y=val2)
這樣就打開了在頭元件有一個簡單的JavaScript的HTML頁:
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Test html</title>
<script type="text/javascript">
$(document).ready(function() {
$("#select1").change(function() {
var selectedVal = $(this).find("option:selected").val();
$("#select2 option").removeAttr("disabled").removeAttr("selected");
$("#select2 option").each(function() {
if($(this).val() != selectedVal && $(this).val() != -1)
$(this).attr("disabled","disabled").removeAttr("selected");
});
});
});
</script>
</head>
隨着在大量的代碼身體。 當我運行test.py時,它會顯示: Python腳本出現問題。以下是導致錯誤的函數調用順序,順序是它們發生的順序。
/Library/WebServer/CGI-Executables/test.py in()
181
182
184 f= open('my.html', 'r').read()
=> 185 print f.format(x=val1, y=val2)
f = '<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN...\n </form>\n <hr>\n </body>\n</html>', f.format = <built-in method format of str object>, val1 = 0, val2 = '','
<type 'exceptions.KeyError'>: '\n\t\t\t $("#select1")'
args = ('\n\t\t\t $("#select1")',)
message = '\n\t\t\t $("#select1")'
但是,如果我刪除Javascript python生成沒有問題的HTML,但我需要該腳本。
我該如何執行腳本而不出錯?
你覺得'f.format(x = val1,y = val2)'是做什麼的? – SLaks
它在輸入框「val1」處分配字符串「x」。 y和val2也是一樣。 val1和val2在HTML正文中聲明!這只是一個測試,但我如何執行JavaScript? –
確保Javascript看起來不像破損的格式字符串,因爲錯誤告訴你。另外,你有一個XSS洞。 – SLaks