首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >可以在没有像Django和Flask这样的框架的情况下,使用HTML和CSS运行python脚本吗?如果是这样的话,是怎么做的?

可以在没有像Django和Flask这样的框架的情况下,使用HTML和CSS运行python脚本吗?如果是这样的话,是怎么做的?
EN

Stack Overflow用户
提问于 2019-11-27 00:32:31
回答 2查看 729关注 0票数 0

可以在没有像Django和Flask这样的框架的情况下,使用HTML和CSS运行python脚本吗?如果是这样的话,是怎么做的?

当一个按钮被单击时,我正在尝试运行一个python脚本,并返回一个输出以显示在屏幕上。我该怎么做呢?

EN

回答 2

Stack Overflow用户

发布于 2019-11-27 00:41:38

好的,Django和Flask为你做了所有的HTTP处理,所以你不需要手动去做。尽管如往常一样,在Python中,你可以用one liner的方式做很多事情。

您可以使用SimpleHTTPServer

CHeckout这个答案:Single Line Python Webserver

票数 0
EN

Stack Overflow用户

发布于 2019-11-27 01:17:33

您可以使用所谓的cgi-bin脚本。Apache和NGINX都可以提供cgi-bin脚本,但是NGINX需要一个外部模块来处理(例如FastCGI)。Apache已经内置了这个(尽管,我怀疑,也是作为一个模块)。

How to run CGI scripts on Nginx为例,查看NGINX的配置。这个示例介绍了如何运行Perl脚本,但这一点并不重要。然而,这是一个相对复杂的配置。

这是另一个答案,这次是How to run cgi script on apache server,带有针对Apache的示例。同样,使用的语言并不那么重要,Python将尽可能重要。

然后,CGI脚本本身可以用任何语言(shell、Python、Perl、C、Go或任何您喜欢的语言)编写-它所要做的就是确保其输出格式正确,输出的第一行指定内容类型,例如:

代码语言:javascript
代码运行次数:0
运行
复制
Content-type: text/html

<html>
<head>
    <title>test page generated by CGI script</title>
</head>

<body>
    <h1>boo hoo!</h1>
</body>
</html>

生成上述代码的Python脚本示例:

代码语言:javascript
代码运行次数:0
运行
复制
#!/usr/bin/env python
#
# Example Python CGI script generating static HTML

HTML = \
"""
<html>
<head>
    <title>test page generated by CGI script</title>
</head>

<body>
    <h1>boo hoo!</h1>
</body>
</html>
"""

def generate_html(html):
    print('Content-type: text/html\r\n')
    print(html)


if __name__ == '__main__':
    generate_html(HTML)

显然,这个脚本没有做任何有用的事情,但是您可以让它做一些其他的事情,并提供适当的HTML输出。

然后,您可以将python文件设置为可执行文件(chmod 755 generate_html.py),还可以选择将其重命名为.cgi扩展名(这是这些文件的传统命名方式;mv generate_html.py generate_html.cgi),并将其放置在web服务器的cgi-bin目录中(我假设您的web服务器根目录为/var/www,cgi-bin目录为/var/www/cgi-bin/ -这是您需要放置generate_html.cgi文件的位置)。

最后,您的标准index.html (放在www文档根目录中,例如/var/www/html)可以像下面这样简单:

代码语言:javascript
代码运行次数:0
运行
复制
<html>
<head>
    <title>main page</title>
</head>

<body>
    <p><a href='/cgi-bin/generate_html.cgi'>Do something</a></p>
</body>
</html>

如果一切都配置正确,您应该会看到Python脚本的输出(一个带有大大的单词的HTML页面),而不是脚本本身的源代码。

免责声明

这会带来安全隐患,特别是如果其他用户可以更改cgi脚本的内容,因为这些脚本在系统上运行,并且具有与运行web服务器应用程序或cgi网关进程的用户相同的访问权限。确保您了解环境中的全部含义。

TL;DR

你可以在没有Flask、Django或任何其他框架的情况下运行Python脚本作为cgi-bin脚本。Apache和NGINX都支持这一点,但配置可能会更复杂一些。不知道你能节省多少时间。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59055454

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档