【问题标题】:Django for a simple web application用于简单 Web 应用程序的 Django
【发布时间】:2010-06-26 11:25:56
【问题描述】:

我正在用 python 开发一个应用程序(一个 API),我想通过 Web 界面提供它的一些功能(就像 Web 服务一样)。 我一直在看 django,但我不知道是否真的很适合我的想法。我只想创建一个调用我的 API 方法的网页,以完成提供该网页的功能。但是,在遵循教程之后,我对 django 的观点感到有些困惑。在我看来,与 ORM 的关系比与经典的 Web 应用程序更相关。

对于如此简单的开发来说,django 是否是一个如此繁重的解决方案(正如我所提到的,通过网络调用我的 API)?我总是必须使用数据库吗?

谢谢。

【问题讨论】:

    标签: python django


    【解决方案1】:

    我喜欢 django,但它有很多东西可以让你大开眼界!如果您不想要数据库位,请关注 urls.py 和 views.py,它们将处理您的 url 并将您想要的信息作为 http 响应返回。

    例如。 urls.py

    urlpatterns += patterns('myapp.views',
    
        url(r'^getstuff/$', 'getstuff' ),
    )
    

    在views.py中

    def getstuff(request):
    
       do whatever in python
    
       return HttpResponse(stuff to return)
    

    【讨论】:

      【解决方案2】:

      您不需要在 Django 项目中使用数据库。 基本上,django 带有一些遵循 MVC 模式(或有时描述的 MVT)的标准化架构。这包括模型、视图、url 调度、模板等。

      您可能需要做以下事情来完成您的任务:

      1. 在 urls.py 中创建 url 定义 到一些 django 视图
      2. 写 django 视图以某种方式调用你的 api 并将结果显示为 web 页面

      您根本不需要模型和数据库,但您需要熟悉视图、url、模板。对于您的简单案例,它可能看起来像是一台大型机器,但如果您有时间,我鼓励您学习这些 django 基础知识。

      如果您正在寻找更简单的东西,我听说过 webpy project。如果您需要一些非常简单的东西,这可能是更好的选择。

      【讨论】:

      • 我决定继续使用 django。我觉得django的官方教程对于web应用开发的第一步来说太重了。无论如何,我发现另一个教程更侧重于 Web 部署而不是 ORM,它遵循了您上面提到的两个要点,终于让我清醒了。
      【解决方案3】:

      一个重要的问题是:您希望 Web 服务由像 Apache 这样的全功能服务器提供,还是只是将“Web 服务器”视为程序中的一个线程(或等价物)?

      如果你想运行 Apache,那么我推荐Werkzeug 之类的东西,它将为你处理大部分 WSGI 内容。对于模板,我听说过关于 Jinja2 的好消息。

      如果这太多了,而你想要的只是一个轻量级、简单的服务器(比如说,当被问到时会输出一些 HTML 或 XML,并且不需要任何花哨的 URL 处理),你可以使用Python 附带的SimpleHTTPServerCGIHTTPServer 模块。

      Django 是一个功能齐全的集成包,几乎可以提供编写数据库支持的 Web 应用程序所需的一切。虽然它的各种组件可以单独使用,但如果你只使用一件事(在你的例子中是模板和视图引擎),它可能是矫枉过正的。

      【讨论】:

        【解决方案4】:

        根本不需要框架。原始 wsgi 并不难,但有点冗长。所以我喜欢用WebOb

        这里是原始的 wsgi

        def application(environ, start_response):
            start_response("200 OK", [])
            return ["<html><body><h1>Hello World</h1></body></html>"]
        

        这是 webob 版本

        from webob.dec import wsgify
        from webob import Request
        
        @wsgify
        def application(request):
            return Response("<html><body><h1>Hello World</h1></body></html>")
        

        这足以在 apache mod_wsgi 下运行,并且有很多库可供您使用,期望/产生 webob 请求和响应。 Turbogears 2repoze.bfg 使用的任何东西在那时都是公平的游戏。

        【讨论】:

          【解决方案5】:

          您绝对不必在 Django 中使用数据库。是否符合您的需求,只有您自己知道。您还可以使用其他 Python Web 框架。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2014-04-04
            • 2013-01-25
            • 1970-01-01
            • 2012-08-24
            • 2014-01-29
            • 2011-04-12
            • 1970-01-01
            相关资源
            最近更新 更多