我正在尝试使用Django框架创建网站。我查看了Django项目网站上的教程,但包含了许多我不需要的信息。我有python脚本提供输出,我需要在网络上有这个输出。我的问题是如何简单地管理Django以获得启动脚本并在Web上提供其输出的链接,或者您可以提供我可以阅读的链接?
谢谢。
答案 0 :(得分:4)
“我有python脚本提供 输出,我需要有这个输出 在网上。“
这不是Django的用途。您想要做的事情可以通过以下简单的事情来实现:
from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer
class Handler(BaseHTTPRequestHandler):
def do_GET(self):
self.send_response(200)
self.send_header("Content-type", "text/html")
self.end_headers()
self.wfile.write("magic content goes here")
if __name__=="__main__":
try:
server = HTTPServer(("", 8080), Handler)
server.serve_forever()
except KeyboardInterrupt:
server.socket.close()
观察self.wfile.write
行。无论你写什么,最终都会在浏览器中出现。如果重要,您可以使用self.path
中的Handler
来检查所请求的文件。
使用Python 2.6.4测试,使用Chrome浏览器访问服务器。
答案 1 :(得分:1)
每个人都是对的。这是使用django的错误方法。但是,如果在将脚本转换为正确的惯用语时需要一个间隙测量:
import sys
from django.http import HttpResponse
def cgi_view(request, my_module):
__import__(my_module)
mod = sys.modules[my_module]
text = mod.main()
resp = HttpResponse(text)
# Then set your headers on resp
return resp
我将其作为练习来确定如何设置标题。抱歉懒惰,但我得去上班。
P.S。如果您的脚本没有考虑将其所有输出生成函数包装在main()函数中,则可以使用subprocess来获取输出。
答案 2 :(得分:1)
使用mod_wsgi插件到Apache。
您可以执行此操作以查看现有脚本如何转换为WSGI应用程序。这是一个起点,展示了WSGI接口的工作原理。
import sys
def myWSGIApp( environ, start_response ):
with file( "temp", "w" ) as output:
sys.stdout= output
execfile( "some script.py" )
sys.stdout= __stdout__
status = '200 OK'
headers = [('Content-type', 'text/plain')]
start_response(status, headers)
result= file( "temp", "r" )
return result
请注意,您可以轻松地重写脚本以符合WSGI 也是标准。这仍然不是最好的方法。
如果你有这个
if __name__ == "__main__":
main()
你只需要为每个脚本添加这样的内容。
def myWSGIApp( environ, start_response ):
with file( "temp", "w" ) as output:
sys.stdout= output
main()
sys.stdout= __stdout__
status = '200 OK'
headers = [('Content-type', 'text/plain')]
start_response(status, headers)
result= file( "temp", "r" )
return result
然后每个脚本都可以作为WSGI应用程序调用,并且可以插入 进入基于WSGI的框架。
最好的方法是重写脚本,使它们不使用sys.stdout
,而是写入作为参数传递给它们的文件。
服务器的测试版本可以这么简单。
from wsgiref.simple_server import make_server
httpd = make_server('', 8000, myWSGIApp)
为脚本创建WSGI应用程序后,您可以创建更智能的应用程序
的WSGI应用程序解析网址。使用要运行的脚本的名称更新environ。
使用适当的环境运行WSGI应用程序。
请查看http://docs.python.org/library/wsgiref.html了解相关信息。
然后,您可以将Apache配置为通过mod_wsgi
使用您的WSGI服务器。
答案 3 :(得分:0)
这不是Django的工作方式。做这个教程,你会节省很多时间和挫折。
答案 4 :(得分:0)
我有python脚本提供输出,我需要在网络上输出。
什么是Django?在python上使用CGI脚本(可能你已经有一个)或WSGI应用程序(这有点难以部署)
答案 5 :(得分:0)
Django是一个框架工作。只需使用CGI脚本。