这个问题已经以各种形式被问过几次。 然而,关于这个主题的大多数答案都有十年或更久的历史了。 我的《Two Scoops》书是针对 Django 3.x 的。 我认为更新与 Django 5.0 相关的答案和今天可用的托管选项可能会很有用。
这是我回顾过的许多旧讨论之一:
我对以下场景特别感兴趣:
- 使用 PyCharm 在 Windows 上进行本地开发
- 从一开始就使用 PostgreSQL(而不是 SQLite)
- 生产部署到 Heroku、Render 或 PythonAnywhere
我有我对本地环境的目录结构等方面的偏好。 Django 创建的名为“mypicturesite”的应用程序的标准布局是:
mypicturesite/
code/
mypicturesite/
__init__.py
settings.py
urls.py
wsgi.py
<directories for other apps in the site>
manage.py
db.sqlite3
venv/
<various work directories>/
这样您最终会得到如下所示的路径:
z:/mypicturesite/code/mypicturesite
我的方法如下所示:
mypicturesite/
code/ # The entire codebase, including virtual environment
site/ # This now makes sense; this contains the site code
__config/ # These are the site configuration scripts
__init__.py
settings.py
urls.py
wsgi.py
<directories for other apps in the site>
manage.py
db.sqlite3
venv/
<various work directories>/
结果:
z:/mypicturesite/code/site
I过去一直强烈批评著名的 Django 5 分钟安装缺乏可用性(从许多角度来看)。 这就是为什么有数十个(如果不是数百个)多页文章和视频解释如何部署 Django,甚至还有一些非常有趣的模因。
自 3.x 以来我就没有接触过 Django。 这就是我发布这个问题的原因。 今天推荐的设置是什么?
以下是针对 Django 5.0 进行本地开发和生产设置的更新指南,重点关注的要求:
本地开发(Windows 上使用 PyCharm)
- 虚拟环境: 坚持使用虚拟环境!PyCharm 与它们无缝集成。
- 在 PyCharm 的项目中打开终端。
-
创建虚拟环境:
python -m venv .venv
(Python 3.3+)。 -
在 PyCharm 中,转到
File > Settings > Project: [your-project] > Python Interpreter
,并将解释器设置为虚拟环境中的 Python 可执行文件(例如,.venv\Scripts\python.exe
)。 -
PostgreSQL 从一开始:
- 安装: 从 https://www.postgresql.org/download/ 下载并安装 PostgreSQL。请务必记下安装过程中的用户名和密码。
-
psycopg3: 安装 PostgreSQL 适配器:
pip install psycopg3
。 -
Django 项目设置:
-
在 PyCharm 的终端中:
django-admin startproject mypicturesite .
(注意结尾的点,用于在当前目录中创建项目)。 -
的项目结构: 的方法完全有效,并且比默认方法更有条理。坚持下去!这有助于将的代码与项目级配置分开。
-
settings.py
配置:
```python from pathlib import Path
# Build paths inside the project like this: BASE_DIR / 'subdir'. BASE_DIR = Path( file ).resolve().parent.parent
# ... other settings ...
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql', 'NAME': 'mypicturesitedb', # 的数据库名称 'USER': 'your_db_user', # 的 PostgreSQL 用户名 'PASSWORD': 'your_db_password', 'HOST': 'localhost', 'PORT': '5432', } } ```
- 迁移和运行服务器:
-
python manage.py migrate
-
python manage.py runserver
生产部署(Heroku、Render、PythonAnywhere)
共同步骤
-
requirements.txt:
pip freeze > requirements.txt
(添加gunicorn
以进行生产 Web 服务器)。 -
设置 Git 存储库: 如果还没有,请初始化一个 Git 存储库并将的代码推送到像 GitHub、GitLab 或 Bitbucket 这样的平台。
-
生产设置:
-
单独的设置文件: 考虑为生产创建一个单独的设置文件(例如,
settings_prod.py
),或使用环境变量来管理敏感数据。 -
DEBUG = False:
在生产中将其设置为
False
。 - ALLOWED_HOSTS: 将的生产域/主机名添加到此列表中。
-
静态文件: 在生产中,需要设置
STATIC_ROOT
并配置像 Whitenoise 这样的东西来提供静态文件,或者使用云提供商的对象存储。 -
数据库设置: 在生产中,需要使用云数据库服务(Heroku Postgres、Amazon RDS 等)或在自己的服务器上设置数据库。
Heroku 特定
-
Heroku CLI: 从 https://devcenter.heroku.com/articles/heroku-cli 安装 Heroku CLI。
-
登录和创建应用:
-
heroku login
-
heroku create mypicturesite-app
-
设置数据库:
-
heroku addons:create heroku-postgresql:hobby-dev
-
部署:
-
git push heroku main
Render 特定
-
GitHub/GitLab 集成: Render 与 GitHub 和 GitLab 无缝集成,便于部署。
-
Render 仪表板: 创建一个新的 Render 服务,连接的存储库,并配置环境变量(数据库凭据、
SECRET_KEY
等)。 -
自动部署: Render 在每次推送代码时自动部署的应用程序。
PythonAnywhere 特定
-
Web 应用程序设置: 在的 PythonAnywhere 仪表板中,创建一个新的 Web 应用程序并指定的 Python 版本。
-
代码上传/克隆: 将的代码上传到 PythonAnywhere 或从的 Git 存储库克隆它。
-
虚拟环境: 在 PythonAnywhere 上创建并激活虚拟环境。
-
Web 应用程序配置: 在 PythonAnywhere 的“Web”选项卡中配置的 Web 应用程序,指定 WSGI 文件的位置等。
其他提示
- Django 安全性: 阅读 Django 文档中关于安全性的部分,并始终采取预防措施来保护的应用程序,尤其是在生产环境中。
- 性能: 使用 Django Debug Toolbar 等工具来识别和解决性能瓶颈。考虑在生产中使用缓存(Redis)和性能分析工具。
- 持续集成和持续交付 (CI/CD): 探索使用 GitHub Actions、GitLab CI 或其他 CI/CD 工具来自动化的构建、测试和部署流程。
通过遵循这些步骤,可以为的 Django 5.0 项目设置一个强大且可扩展的开发和生产环境。请记住根据的特定需求和选择的云平台调整配置。
标签:python,django,heroku,render,pythonanywhere From: 78785597