在没有Django或任何框架的python中编写webapps

时间:2014-02-15 20:47:11

标签: python django web-frameworks

我正在开发一款需要网络前端的应用。我所关心的只是iOS,Android应用程序的HTTP接口。后端将使用MongoDB。

我需要使用Python框架吗?我看到Django想为我生成数据库接口。从粗略阅读Django教程不清楚为什么我必须使用所有那些“应用程序”,如admin,auth等。我没有看到在Django中禁用数据库接口的方法。

当我之前编写php代码时,我需要的只是php apache模块,我可以访问php代码中的HTTP头,我自己处理了所有内容。我可以不用python做那样的事情吗?为什么人们使用框架?

2 个答案:

答案 0 :(得分:6)

您可以尝试使用Flask这个轻量级的Web框架,它可以帮助您创建简单的前端。可以在框架网站上找到简单视图的示例:

@app.route('/login', methods=['GET', 'POST'])
def login():
    if request.method == 'POST':
        do_the_login()
    else:
        show_the_login_form()

使用Flask,默认情况下没有不需要Django(admin,auth ...)的模块,因此您可以专注于数据库管理。

<小时/> 如果你想要一个尊重你的问题的答案,是的,你可以在没有框架的情况下用Python创建一个网站。 WSGI可能对此有所帮助,但会更加困难。

答案 1 :(得分:3)

修改

关于Using Django for (mostly) static sites

的好文章

<强> ORIGINAL:

你在提问时提到了Django,所以我会按照这条兴趣来关注。并不是说没有其他框架可以肯定做得很好,但正如已经评论过的那样,如果没有关于你的特定用例的更多细节,那么很难建设性的。

没有任何框架,意味着直接使用WSGI。这意味着手动指定HTTP标头,以及所有爵士......毕竟我会看一下框架。 http://wsgi.readthedocs.org/en/latest/frameworks.html


Django绝不依赖于数据库。当然,它有很多内置的好东西,可以很容易地使用数据库,但肯定没有必要。

只需从INSTALLED_APPS删除所有应用,然后从urls.py中删除url(r'^admin/'...。就是这样,现在你可以创建你的视图和(optionaly)模板,不受数据库的影响:) 注意:并非所有应用都需要数据库,例如。 django.contrib.staticfiles。

一个简单的视图(取自The Docs):

from django.http import HttpResponse
import datetime

def current_datetime(request):
    now = datetime.datetime.now()
    html = "<html><body>It is now %s.</body></html>" % now
    return HttpResponse(html)

urls.py中的这一行会将URL链接到它:

url(r'^$', 'testapp.views.current_datetime'),  # on domain root
or
url(r'^da-time/?$', 'testapp.views.current_datetime'),  # on domain.com/da-time/

您可以使用python manage.py runserver运行测试服务器。

是的,你没有使用ORM,恕我直言是Django最好的部分,但我仍然认为这可能是值得的,特别是如果你熟悉它,或者计划成为。而且,你也不是在写response_headers = [('Content-type', 'text/plain')],这可能是一件好事。当然,虽然手动指定标题,重定向等只是一行或两行代码。