Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将param转换为python?_Php_Python_Parameters - Fatal编程技术网

Php 将param转换为python?

Php 将param转换为python?,php,python,parameters,Php,Python,Parameters,我正在尝试用python学习web编程。我正在将旧的php flash项目转换为python。现在,我对如何使用python设置param值和创建对象感到困惑 仅供参考,我使用一个php文件index.php与flash.swf通信。因此,我的其他php文件,如login.php、logout.php、mail.php、xml.php等,过去都是从这里调用的 下面是index.php中的flash对象调用- <object classid="clsid:XXXXXXXXX-YYYY-ZZZ

我正在尝试用python学习web编程。我正在将旧的php flash项目转换为python。现在,我对如何使用python设置param值和创建对象感到困惑

仅供参考,我使用一个php文件index.php与flash.swf通信。因此,我的其他php文件,如login.php、logout.php、mail.php、xml.php等,过去都是从这里调用的

下面是index.php中的flash对象调用-

<object classid="clsid:XXXXXXXXX-YYYY-ZZZZ-AAAA-BBBBBBBBBB" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" width="100%" height="100%" id="main" align="middle">
<param name="allowScriptAccess" value="all" />
<param name="flashvars" value= />
<param name="movie" value="flash.swf?<?=substr($_SERVER["REQUEST_URI"],strrpos($_SERVER["SCRIPT_NAME"],"/")+1);?>" />

<param name="loop" value="false" />
<param name="quality" value="high" />
<param name="bgcolor" value="#eeeeee" />
<embed src="flash.swf?<?=substr($_SERVER["REQUEST_URI"],strrpos($_SERVER["SCRIPT_NAME"],"/")+1);?>" loop="false" quality="high" bgcolor="#eeeeee" width="100%" height="100%" name="main" align="middle" allowScriptAccess="all" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />
</object>


php本身可以用作生成html的模板语言,但在python中,您需要使用一种可用的模板语言。如果需要,可以使用string.Template类进行简单的模板制作,但这不是您想要做的

您的第一步应该是决定要使用的web框架,并使用它提供的模板,例如django

但如果您只需要一个平面cgi python脚本,则需要将html编写到标准输出。 因此,创建一个简单的html并用参数替换模板值,例如

from string import Template 

htmlTemplate = Template(""" 
<html>
<title>$title</title>
</html> 
""")

myvalues = {'title':'wow it works!'}
print "Content-type: text/html"
print
print htmlTemplate.substitute(myvalues)

php本身可以用作生成html的模板语言,但在python中,您需要使用一种可用的模板语言。如果需要,可以使用string.Template类进行简单的模板制作,但这不是您想要做的

您的第一步应该是决定要使用的web框架,并使用它提供的模板,例如django

但如果您只需要一个平面cgi python脚本,则需要将html编写到标准输出。 因此,创建一个简单的html并用参数替换模板值,例如

from string import Template 

htmlTemplate = Template(""" 
<html>
<title>$title</title>
</html> 
""")

myvalues = {'title':'wow it works!'}
print "Content-type: text/html"
print
print htmlTemplate.substitute(myvalues)

Python是一种通用语言,并不是专门为web开发的。存在一些可嵌入的类似PHP的解决方案,但在大多数Python web框架中,您分别编写Python和HTML(模板)代码

例如,在您第一次编写(视图-您知道-来自该著名模式)函数时:

def my_view(request, movie):
    return render_to_template('my_view.html',
                              {'movie': settings.MEDIA_URL + 'flash.swf?' + movie})
并将其注册到(在Django中,有一个特殊文件,名为
url.py
):

虽然对于这样一个微小的任务来说,这似乎是一个很大的工作,但当您必须编写比简单的值替换脚本更大的内容时,框架会得到回报。例如,实际上,您可以用不到100行代码编写一个简单的博客应用程序。该框架将自动处理URL解析(某种程度上类似于Apache的mod_rewrite for PHP)、复杂模板、数据库访问、表单生成、处理和验证、用户身份验证、调试等

有很多不同的框架,每种框架都有自己的优点和缺点。我建议花些时间阅读介绍,选择一个你喜欢的。就我个人而言,我喜欢Django,并在这方面取得了成功。我也听说了关于和的好消息

如果您需要一些非常简单的东西(比如在您的示例中),而您几乎不需要任何东西,那么您可以只编写一个小应用程序,然后可以将其与Apache的mod_python或mod_wsgi一起使用。它将是这样的:

def return_movie_html(environ, start_response):
    request_uri = environ.get('REQUEST_URI')
    movie_uri = request_uri[request_uri.rfind('/')+1:]
    start_response('200 OK', [('Content-Type', 'text/html')])
    return ['''
            <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
                                  "http://www.w3.org/TR/html4/strict.dtd">
            <html>
            ...
            <object ...>
            <param name="allowScriptAccess" value="all" />
            <param name="flashvars" value= />
            <param name="movie" value="%(movie)s" />
            <param name="loop" value="false" />
            <param name="quality" value="high" />
            <param name="bgcolor" value="#eeeeee" />
            <embed src="%(movie)s" loop="false" ... />
            </object>
            ...
            </html>
            ''' % {'movie': movie_uri}]
def return\u movie\u html(环境,启动\u响应):
request\u uri=environ.get('request\u uri')
movie_uri=request_uri[request_uri.rfind('/')+1:]
开始响应('200OK',[('Content-Type','text/html'))
返回['''
...
...
“%$movie”:movie_uri}]

总而言之:如果没有额外的支持库,Python web编程在某种程度上是痛苦的,需要从头开始做从URI解析到输出格式的所有事情。然而,有很多很好的库和框架,使这项工作不仅没有痛苦,有时甚至令人愉快:)更多地了解它们,我相信你们不会后悔的。

Python是一种通用语言,并不完全适合web。存在一些可嵌入的类似PHP的解决方案,但在大多数Python web框架中,您分别编写Python和HTML(模板)代码

例如,在您第一次编写(视图-您知道-来自该著名模式)函数时:

def my_view(request, movie):
    return render_to_template('my_view.html',
                              {'movie': settings.MEDIA_URL + 'flash.swf?' + movie})
并将其注册到(在Django中,有一个特殊文件,名为
url.py
):

虽然对于这样一个微小的任务来说,这似乎是一个很大的工作,但当您必须编写比简单的值替换脚本更大的内容时,框架会得到回报。例如,实际上,您可以用不到100行代码编写一个简单的博客应用程序。该框架将自动处理URL解析(某种程度上类似于Apache的mod_rewrite for PHP)、复杂模板、数据库访问、表单生成、处理和验证、用户身份验证、调试等

有很多不同的框架,每种框架都有自己的优点和缺点。我建议花些时间阅读介绍,选择一个你喜欢的。就我个人而言,我喜欢Django,并在这方面取得了成功。我也听说了关于和的好消息

如果您需要一些非常简单的东西(比如在您的示例中),而您几乎不需要任何东西,那么您可以只编写一个小应用程序,然后可以将其与Apache的mod_python或mod_wsgi一起使用。它将是这样的:

def return_movie_html(environ, start_response):
    request_uri = environ.get('REQUEST_URI')
    movie_uri = request_uri[request_uri.rfind('/')+1:]
    start_response('200 OK', [('Content-Type', 'text/html')])
    return ['''
            <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
                                  "http://www.w3.org/TR/html4/strict.dtd">
            <html>
            ...
            <object ...>
            <param name="allowScriptAccess" value="all" />
            <param name="flashvars" value= />
            <param name="movie" value="%(movie)s" />
            <param name="loop" value="false" />
            <param name="quality" value="high" />
            <param name="bgcolor" value="#eeeeee" />
            <embed src="%(movie)s" loop="false" ... />
            </object>
            ...
            </html>
            ''' % {'movie': movie_uri}]
def return\u movie\u html(环境,启动\u响应):
request\u uri=environ.get('request\u uri')
movie_uri=request_uri[request_uri.rfind('/')+1:]
开始响应('200OK',[('Content-Type','text/html'))
返回['''
...
...
“%$movie”:movie_uri}]
总而言之:如果没有额外的支持库,Python web编程在某种程度上是痛苦的,需要从头开始做从URI解析到输出格式的所有事情。然而,有很多很好的库和框架,使这项工作不仅毫无痛苦,有时甚至令人愉快:)更多地了解它们,我
http://127.0.0.1:8000/[..script..].php[..anything..]
routes_in=(('/(?P<script>\w+)\.php(?P<anything>.*)',
            '/app/default/\g<script>\g<anything>'),
          (('/flash.swf','/app/static/slash.swf'))
routes_out(('/app/default/(?P<script>\w+)\.php(?P<anything>.*)',
            '/\g<script>\.php\g<anything>'),)
http://127.0.0.1:8000/index.php into http://127.0.0.1:8000/app/default/index
http://127.0.0.1:8000/index.php/junk into http://127.0.0.1:8000/app/default/index/junk
http://127.0.0.1:8000/flash.swf into http://127.0.0.1:8000/app/static/flash.swf
def index(): return dict()
<object classid="clsid:XXXXXXXXX-YYYY-ZZZZ-AAAA-BBBBBBBBBB" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" width="100%" height="100%" id="main" align="middle">
<param name="allowScriptAccess" value="all" />
<param name="flashvars" value= />
<param name="movie" value="flash.swf?{{=request.env.web2py_original_uri[len(request.function)+5:]}}" />

<param name="loop" value="false" />
<param name="quality" value="high" />
<param name="bgcolor" value="#eeeeee" />
<embed src="flash.swf?{{=request.env.web2py_original_uri[len(request.function)+5:]}}" />
" loop="false" quality="high" bgcolor="#eeeeee" width="100%" height="100%" name="main" align="middle" allowScriptAccess="all" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />
</object>