我正在制作一个网站,其中使用一些 html 表单,它将值传递给 python 脚本,作为回报,python 脚本在网络浏览器中打开一个新页面/选项卡。我正在使用 webbrowser 模块。
虽然我可以使用“webbrowser.get([name])”选择默认浏览器或任何其他浏览器;但我担心的是,因为这将是一个公共网页,所以任何人都可以在他们选择的任何浏览器中打开该页面。
我面临的问题是:假设我的默认浏览器是“firefox”,我打开该页面在“chrome”中,因此当 python 脚本打开新页面时,它会在“firefox”而不是“chrome”中打开该页面。
这是我的问题:
代码如下所示:
#!C:\Python27\python.exe -u
# -*- coding: UTF-8 -*-
import MySQLdb
import sys
import cgi
import re
import cgitb
import webbrowser
cgitb.enable()
print "Content-Type: text/plain;charset=utf-8"
print
try:
db = MySQLdb.connect(host="localhost", user="root", passwd="", db="pymysql")
except MySQLdb.Error, e:
print "Error %d: %s" % (e.args[0], e.args[1])
sys.exit()
# ----- Do some analysis with the database ----
# ----- Create some kml files ----
# Use the kml files to display points in the map.
# Open the page where openlayers is present
webbrowser.open_new_tab('http://localhost/simulator.html')
您可能确信这是一种有效方法的唯一原因很可能是因为您在本地计算机上运行服务器。您正在执行的 python 代码是服务器端的,因此它无法控制客户端。客户端通常位于远程计算机上。在您的情况下,由于您的客户端也在服务器上,因此您会看到 python 脚本使用 webbrowser 模块打开浏览器选项卡的效果。
这在标准客户端服务器 Web 情况下是不可能的。客户端将是远程的,您的服务器端代码无法控制他们的机器。您只能返回 http 请求,这些请求只是浏览器接收和呈现的内容。如果您想打开选项卡,则需要在客户端使用 JavaScript 解决方案。
更现实的解决方案是让您的服务器返回正确的客户端代码。如果表单是通过 ajax 提交的,那么您的响应可能包含将打开一个新页面的 javaacript。
您的Python代码将在服务器上运行。访问您网站的人只会收到 html 页面。有关打开新选项卡的信息,请参阅this。但请阅读更多有关网站如何运作的信息。
webbrowser
模块用于客户端应用程序,而不是网站。