Python Django简单的网站

时间:2010-02-09 12:30:14

标签: python django

我正在尝试使用Django框架创建网站。我查看了Django项目网站上的教程,但包含了许多我不需要的信息。我有python脚本提供输出,我需要在网络上有这个输出。我的问题是如何简单地管理Django以获得启动脚本并在Web上提供其输出的链接,或者您可以提供我可以阅读的链接?

谢谢。

6 个答案:

答案 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应用程序
  1. 解析网址。使用要运行的脚本的名称更新environ。

  2. 使用适当的环境运行WSGI应用程序。

  3. 请查看http://docs.python.org/library/wsgiref.html了解相关信息。

    然后,您可以将Apache配置为通过mod_wsgi使用您的WSGI服务器。

    查看http://code.google.com/p/modwsgi/了解详情。

答案 3 :(得分:0)

这不是Django的工作方式。做这个教程,你会节省很多时间和挫折。

答案 4 :(得分:0)

  

我有python脚本提供输出,我需要在网络上输出。

什么是Django?在python上使用CGI脚本(可能你已经有一个)或WSGI应用程序(这有点难以部署)

答案 5 :(得分:0)

Django是一个框架工作。只需使用CGI脚本。