开发环境搭建
本章将详细介绍如何搭建Django开发环境,包括Python安装、虚拟环境配置、Django安装以及开发工具的选择和配置。
系统要求
操作系统支持
Django支持以下操作系统:
- Windows 10/11
- macOS 10.15+
- Linux (Ubuntu, CentOS, Debian等)
Python版本要求
python
# Django 4.2 LTS 支持的Python版本
Python 3.8+ # 最低要求
Python 3.9 # 推荐
Python 3.10 # 推荐
Python 3.11 # 推荐
Python 3.12 # 最新支持Python安装
Windows系统
1. 从官网下载Python
访问 Python官网 下载最新版本:
bash
# 下载地址
https://www.python.org/downloads/windows/
# 推荐下载
Python 3.11.x (stable)2. 安装Python
bash
# 安装选项
☑ Add Python to PATH
☑ Install for all users
☑ Associate files with Python
☑ Create shortcuts for installed applications
☑ Add Python to environment variables
☑ Precompile standard library3. 验证安装
cmd
# 打开命令提示符
python --version
# 输出: Python 3.11.x
pip --version
# 输出: pip 23.x.x from ...macOS系统
1. 使用Homebrew安装(推荐)
bash
# 安装Homebrew(如果未安装)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# 安装Python
brew install python@3.11
# 验证安装
python3 --version
pip3 --version2. 从官网下载安装
bash
# 下载地址
https://www.python.org/downloads/macos/
# 安装后验证
python3 --version
pip3 --versionLinux系统
Ubuntu/Debian
bash
# 更新包列表
sudo apt update
# 安装Python 3.11
sudo apt install python3.11 python3.11-pip python3.11-venv
# 验证安装
python3.11 --version
pip3 --versionCentOS/RHEL
bash
# 安装EPEL仓库
sudo yum install epel-release
# 安装Python 3.11
sudo yum install python311 python311-pip
# 验证安装
python3.11 --version
pip3 --version虚拟环境配置
虚拟环境是Python开发的最佳实践,它可以为每个项目创建独立的Python环境。
为什么使用虚拟环境
python
# 问题场景:不同项目需要不同版本的包
项目A: Django==3.2.0, requests==2.25.0
项目B: Django==4.2.0, requests==2.28.0
# 解决方案:为每个项目创建独立的虚拟环境
venv_project_a/
├── Django==3.2.0
└── requests==2.25.0
venv_project_b/
├── Django==4.2.0
└── requests==2.28.0使用venv创建虚拟环境
1. 创建虚拟环境
bash
# Windows
python -m venv django_env
# macOS/Linux
python3 -m venv django_env2. 激活虚拟环境
bash
# Windows
django_env\Scripts\activate
# macOS/Linux
source django_env/bin/activate
# 激活后命令提示符会显示
(django_env) C:\Users\YourName>3. 停用虚拟环境
bash
# 任何系统
deactivate使用conda创建虚拟环境
如果你使用Anaconda或Miniconda:
bash
# 创建虚拟环境
conda create -n django_env python=3.11
# 激活环境
conda activate django_env
# 停用环境
conda deactivate
# 列出所有环境
conda env list
# 删除环境
conda env remove -n django_env虚拟环境最佳实践
bash
# 1. 为每个项目创建独立的虚拟环境
mkdir my_django_project
cd my_django_project
python -m venv venv
# 2. 使用有意义的环境名称
python -m venv blog_project_env
python -m venv ecommerce_env
# 3. 将虚拟环境目录添加到.gitignore
echo "venv/" >> .gitignore
echo "*.pyc" >> .gitignore
echo "__pycache__/" >> .gitignore
# 4. 创建requirements.txt记录依赖
pip freeze > requirements.txt
# 5. 从requirements.txt安装依赖
pip install -r requirements.txtDjango安装
安装Django
bash
# 确保虚拟环境已激活
(django_env) $ pip install Django
# 安装特定版本
(django_env) $ pip install Django==4.2.7
# 安装最新LTS版本
(django_env) $ pip install "Django>=4.2,<5.0"验证Django安装
bash
# 检查Django版本
(django_env) $ python -m django --version
# 输出: 4.2.7
# 或者在Python中检查
(django_env) $ python
>>> import django
>>> django.get_version()
'4.2.7'
>>> django.VERSION
(4, 2, 7, 'final', 0)安装额外依赖
bash
# 数据库驱动
pip install psycopg2-binary # PostgreSQL
pip install mysqlclient # MySQL
pip install cx_Oracle # Oracle
# 图片处理
pip install Pillow
# 开发工具
pip install django-debug-toolbar
pip install django-extensions
# API开发
pip install djangorestframework
# 创建完整的requirements.txt
pip freeze > requirements.txt开发工具选择
代码编辑器/IDE
1. Visual Studio Code(推荐)
json
// .vscode/settings.json
{
"python.defaultInterpreterPath": "./venv/bin/python",
"python.linting.enabled": true,
"python.linting.pylintEnabled": true,
"python.formatting.provider": "black",
"python.formatting.blackArgs": ["--line-length=88"],
"files.associations": {
"*.html": "django-html"
},
"emmet.includeLanguages": {
"django-html": "html"
}
}推荐扩展:
json
// .vscode/extensions.json
{
"recommendations": [
"ms-python.python",
"ms-python.flake8",
"ms-python.black-formatter",
"batisteo.vscode-django",
"wholroyd.jinja",
"bradlc.vscode-tailwindcss"
]
}2. PyCharm Professional
python
# PyCharm配置
# File -> Settings -> Project -> Python Interpreter
# 选择虚拟环境中的Python解释器
# Django支持
# File -> Settings -> Languages & Frameworks -> Django
# Enable Django Support: ✓
# Django project root: /path/to/your/project
# Settings: settings.py3. Sublime Text
json
// Packages/User/Python.sublime-settings
{
"python_interpreter": "/path/to/venv/bin/python",
"suppress_word_completions": true,
"suppress_explicit_completions": true
}数据库工具
1. SQLite Browser
bash
# 安装SQLite Browser
# Windows: 下载安装包
# macOS: brew install --cask db-browser-for-sqlite
# Ubuntu: sudo apt install sqlitebrowser2. pgAdmin (PostgreSQL)
bash
# 安装pgAdmin
# 访问 https://www.pgadmin.org/download/3. MySQL Workbench
bash
# 安装MySQL Workbench
# 访问 https://www.mysql.com/products/workbench/版本控制
Git配置
bash
# 安装Git
# Windows: https://git-scm.com/download/win
# macOS: brew install git
# Linux: sudo apt install git
# 配置Git
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"
# 创建.gitignore文件
cat > .gitignore << EOF
# Python
__pycache__/
*.py[cod]
*$py.class
*.so
.Python
env/
venv/
ENV/
# Django
*.log
local_settings.py
db.sqlite3
media/
# IDE
.vscode/
.idea/
*.swp
*.swo
# OS
.DS_Store
Thumbs.db
EOF项目结构最佳实践
推荐的项目结构
my_django_project/
├── venv/ # 虚拟环境
├── requirements/ # 依赖文件
│ ├── base.txt # 基础依赖
│ ├── development.txt # 开发依赖
│ └── production.txt # 生产依赖
├── config/ # 配置文件
│ ├── __init__.py
│ ├── settings/
│ │ ├── __init__.py
│ │ ├── base.py # 基础设置
│ │ ├── development.py # 开发设置
│ │ └── production.py # 生产设置
│ ├── urls.py
│ └── wsgi.py
├── apps/ # 应用目录
│ ├── __init__.py
│ ├── accounts/ # 用户账户应用
│ ├── blog/ # 博客应用
│ └── core/ # 核心应用
├── static/ # 静态文件
├── media/ # 媒体文件
├── templates/ # 模板文件
├── locale/ # 国际化文件
├── tests/ # 测试文件
├── docs/ # 文档
├── scripts/ # 脚本文件
├── .env # 环境变量
├── .gitignore
├── manage.py
├── README.md
└── requirements.txt环境变量配置
1. 安装python-decouple
bash
pip install python-decouple2. 创建.env文件
bash
# .env
DEBUG=True
SECRET_KEY=your-secret-key-here
DATABASE_URL=sqlite:///db.sqlite3
ALLOWED_HOSTS=localhost,127.0.0.1
# 数据库配置
DB_NAME=mydatabase
DB_USER=myuser
DB_PASSWORD=mypassword
DB_HOST=localhost
DB_PORT=5432
# 邮件配置
EMAIL_HOST=smtp.gmail.com
EMAIL_PORT=587
EMAIL_HOST_USER=your-email@gmail.com
EMAIL_HOST_PASSWORD=your-app-password3. 在settings.py中使用
python
# settings.py
from decouple import config
import os
# 基础配置
DEBUG = config('DEBUG', default=False, cast=bool)
SECRET_KEY = config('SECRET_KEY')
ALLOWED_HOSTS = config('ALLOWED_HOSTS', default='').split(',')
# 数据库配置
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': config('DB_NAME'),
'USER': config('DB_USER'),
'PASSWORD': config('DB_PASSWORD'),
'HOST': config('DB_HOST', default='localhost'),
'PORT': config('DB_PORT', default='5432'),
}
}
# 邮件配置
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = config('EMAIL_HOST')
EMAIL_PORT = config('EMAIL_PORT', cast=int)
EMAIL_USE_TLS = True
EMAIL_HOST_USER = config('EMAIL_HOST_USER')
EMAIL_HOST_PASSWORD = config('EMAIL_HOST_PASSWORD')开发工具配置
Django Debug Toolbar
bash
# 安装
pip install django-debug-toolbarpython
# settings.py
INSTALLED_APPS = [
# ...
'debug_toolbar',
]
MIDDLEWARE = [
# ...
'debug_toolbar.middleware.DebugToolbarMiddleware',
]
# 只在DEBUG模式下显示
INTERNAL_IPS = [
'127.0.0.1',
]
# 配置面板
DEBUG_TOOLBAR_PANELS = [
'debug_toolbar.panels.versions.VersionsPanel',
'debug_toolbar.panels.timer.TimerPanel',
'debug_toolbar.panels.settings.SettingsPanel',
'debug_toolbar.panels.headers.HeadersPanel',
'debug_toolbar.panels.request.RequestPanel',
'debug_toolbar.panels.sql.SQLPanel',
'debug_toolbar.panels.staticfiles.StaticFilesPanel',
'debug_toolbar.panels.templates.TemplatesPanel',
'debug_toolbar.panels.cache.CachePanel',
'debug_toolbar.panels.signals.SignalsPanel',
'debug_toolbar.panels.logging.LoggingPanel',
'debug_toolbar.panels.redirects.RedirectsPanel',
'debug_toolbar.panels.profiling.ProfilingPanel',
]python
# urls.py
from django.conf import settings
from django.conf.urls import include
if settings.DEBUG:
import debug_toolbar
urlpatterns = [
path('__debug__/', include(debug_toolbar.urls)),
] + urlpatternsDjango Extensions
bash
# 安装
pip install django-extensionspython
# settings.py
INSTALLED_APPS = [
# ...
'django_extensions',
]bash
# 有用的命令
python manage.py shell_plus # 增强的shell
python manage.py show_urls # 显示所有URL
python manage.py validate_templates # 验证模板
python manage.py runserver_plus # 增强的开发服务器代码质量工具
1. Black (代码格式化)
bash
# 安装
pip install black
# 使用
black .
black --line-length 88 .
black --check . # 检查但不修改toml
# pyproject.toml
[tool.black]
line-length = 88
target-version = ['py38']
include = '\.pyi?$'
extend-exclude = '''
/(
# directories
\.eggs
| \.git
| \.hg
| \.mypy_cache
| \.tox
| \.venv
| build
| dist
)/
'''2. Flake8 (代码检查)
bash
# 安装
pip install flake8
# 使用
flake8 .ini
# .flake8
[flake8]
max-line-length = 88
exclude =
.git,
__pycache__,
venv,
migrations
ignore =
E203, # whitespace before ':'
W503, # line break before binary operator3. isort (导入排序)
bash
# 安装
pip install isort
# 使用
isort .
isort --check-only . # 检查但不修改toml
# pyproject.toml
[tool.isort]
profile = "black"
multi_line_output = 3
line_length = 88预提交钩子
bash
# 安装pre-commit
pip install pre-commit
# 创建配置文件
cat > .pre-commit-config.yaml << EOF
repos:
- repo: https://github.com/psf/black
rev: 23.9.1
hooks:
- id: black
language_version: python3.11
- repo: https://github.com/pycqa/isort
rev: 5.12.0
hooks:
- id: isort
args: ["--profile", "black"]
- repo: https://github.com/pycqa/flake8
rev: 6.1.0
hooks:
- id: flake8
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.4.0
hooks:
- id: trailing-whitespace
- id: end-of-file-fixer
- id: check-yaml
- id: check-added-large-files
EOF
# 安装钩子
pre-commit install验证环境配置
创建测试项目
bash
# 激活虚拟环境
source venv/bin/activate # Linux/macOS
# 或
venv\Scripts\activate # Windows
# 创建Django项目
django-admin startproject testproject
cd testproject
# 运行开发服务器
python manage.py runserver
# 访问 http://127.0.0.1:8000/
# 应该看到Django欢迎页面环境检查清单
python
# check_environment.py
import sys
import django
from django.conf import settings
def check_environment():
print("=== Django环境检查 ===")
# Python版本
print(f"Python版本: {sys.version}")
# Django版本
print(f"Django版本: {django.get_version()}")
# 虚拟环境检查
if hasattr(sys, 'real_prefix') or (hasattr(sys, 'base_prefix') and sys.base_prefix != sys.prefix):
print("✓ 虚拟环境已激活")
else:
print("✗ 虚拟环境未激活")
# 已安装的包
import pkg_resources
installed_packages = [d.project_name for d in pkg_resources.working_set]
required_packages = ['django', 'pillow']
for package in required_packages:
if package.lower() in [p.lower() for p in installed_packages]:
print(f"✓ {package} 已安装")
else:
print(f"✗ {package} 未安装")
if __name__ == "__main__":
check_environment()常见问题解决
1. Python命令不识别
bash
# Windows
# 确保Python已添加到PATH环境变量
# 或使用py命令
py --version
py -m pip install django
# macOS/Linux
# 使用python3命令
python3 --version
python3 -m pip install django2. pip安装失败
bash
# 升级pip
python -m pip install --upgrade pip
# 使用国内镜像
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple django
# 配置永久镜像源
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple3. 虚拟环境激活失败
bash
# Windows PowerShell执行策略问题
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
# 或使用cmd而不是PowerShell4. Django导入错误
python
# 确保在正确的虚拟环境中
which python # Linux/macOS
where python # Windows
# 检查Django是否在Python路径中
python -c "import django; print(django.__file__)"本章小结
本章详细介绍了Django开发环境的搭建:
关键要点:
- Python安装:选择合适的Python版本
- 虚拟环境:为每个项目创建独立环境
- Django安装:使用pip安装Django
- 开发工具:选择合适的IDE和扩展
- 项目结构:遵循最佳实践组织代码
最佳实践:
- 使用虚拟环境隔离项目依赖
- 配置环境变量管理敏感信息
- 使用代码质量工具保证代码规范
- 设置预提交钩子自动检查代码
- 创建详细的requirements.txt
开发工具链:
- VS Code + Python扩展
- Django Debug Toolbar
- Black + Flake8 + isort
- Git版本控制
- 虚拟环境管理
在下一章中,我们将创建第一个Django项目,学习Django的基本项目结构和配置。