Heroku 与 Django 的结合使用

Usage of Heroku with Django

我目前正在学习 Django 并且对它有了一定的了解。我知道您可以使用 python manage.py 运行server 启动服务器。但随后还有 heroku ps:scale web=1 后跟 heroku open 以在您在主机 herokuapp.com 上选择的子域中打开网页。使用 heroku 与 运行server 相比有什么意义?当需要部署到生产环境时,heroku 的用途是什么? heroku 到底是用来做什么的,原因是什么?在创建专业的 django web site/application 时,heroku 是必需的还是非常有用?如果是,为什么?我真的不明白使用 heroku 的原因。我很好奇 django 的最佳实践是什么,以及它们是否包括使用或不使用 heroku。

除了 heroku 问题之外,django 在设置域名等方面的最佳做法是什么(herokuapp.com 子域名除外)以及其他 components/software 解决方案值得与 django 一起使用吗?

我正在做的事情之一是网站上的 FTP 门户,人们可以登录并上传文件。 django 是否有 plugins/python 模块来做这样的事情,还是必须定制?这让我想到了我的最后一个问题,django 提供了什么样的 addons/modules 来避免在实现 django website/app 的某些功能时重新发明轮子?

我关注的教程:http://tutorial.djangogirls.org/en/django_orm/README.html

帮助我掌握了 django,但我对它的更高级部分感到好奇。比如自定义模块,自定义样式,自定义脚本(不管是js还是严格意义上的python)。

如果有人能指出我正确的方向或提供任何建议,我将不胜感激。本教程让我使用模块:dj-database-url、whitenoise、gunicorn、python-dateutil、psycopg2、requests。我知道其中一些是做什么的,但是 psycopg2、whitenoise、dateutil 和 dj-database、url 的目的是什么?还有其他值得使用的模块吗?

对不起,问题太多了,但我正在尽我所能去理解 django,这样我就可以在组合 django 项目时做出正确的评估。

提前致谢。

编辑,最后的问题:

1) 另外,当我使用 heroku 时,他们给了我一个位于 herokuapps.com 的子域,我可以设置自己的 URL 并仍然使用 heroku 吗?

2) 最后但并非最不重要的一点是,heroku 让您注册并在 herokuapp.com 上为您提供一个子域。有没有一种方法可以将 heroku 与您自己的域而不是他们给您的域一起使用?有具体的方法吗?

编辑 2:

当我做 运行server 它工作正常,但是当我 运行 它与 heroku ps:scale web=1 然后 heroku 打开它打开但只显示标题页面顶部,没有内容。不确定为什么会这样。有人可以解释 运行server 和 heroku ps:scale web=1 后跟 heroku open 之间的区别吗?

psycopg2 用于在您的应用程序中使用 postgresql。如果使用 gunicorn,白噪声允许您在没有 nginx 的情况下提供静态文件。 Requests 是一个易于使用的 urllib2 库,带有 pythonic 调用以与来自其他网站的 api 一起工作。

如果你想用 facebook 登录做一些测试,Heroku 是一个很好的去处,特别是如果你需要 url 本地主机之外的地方。

我的建议是你读两勺 Django http://twoscoopspress.org/products/two-scoops-of-django-1-6

它介绍了很多最佳实践,并在投票后作为一个很好的教程。我还建议将 django-bower 合并到您的项目中。我会列出一些要添加的重要内容。

Django Bower:https://github.com/nvbn/django-bower - 帮助组织静态文件

Crispy Forms : https://github.com/maraujop/django-crispy-forms - 很棒的表单渲染,非常适合 bootstrap

Django Rest 框架:https://github.com/tomchristie/django-rest-framework - REST API

这些只是开始,还有很多东西需要学习。

  1. python manage.py runserver 仅用于开发。切勿在生产中使用它。
  2. Heroku 让部署 Django 代码变得超级容易。您只需要一些配置和 git push heroku master。但这不是部署代码的唯一方法。您还可以使用 Nginx 等网络服务器、作为 WSGI 服务器的 Gunicorn 以及您选择的数据库来设置服务器。要进行设置,您需要了解一些有关 Linux 和命令行的知识。
  3. 因此,如果您不知道如何设置服务器,Heroku 会非常有用。
  4. Heroku supports custom domains,设置起来也很简单。
  5. 正如 Mikeec3 所提到的,"Two Scoops of Django" 是一本非常好的读物。
  6. 如果您正在寻找 django 包,www.djangopackages.com 是一个不错的起点。