Django 的详细使用指南,涵盖项目创建、模型设计、视图编写及部署:
1. 安装与初始化
bash
# 安装 Django
pip install django
# 创建项目
django-admin startproject myproject
cd myproject
# 创建应用
python manage.py startapp myapp2. 项目结构
myproject/
├── myproject/ # 项目配置
│ ├── settings.py # 数据库、中间件等配置
│ ├── urls.py # 根路由
├── myapp/ # 应用模块
│ ├── models.py # 数据模型
│ ├── views.py # 视图逻辑
│ ├── urls.py # 应用路由
│ └── templates/ # 模板文件
└── manage.py # 管理脚本3. 配置数据库(以 SQLite 为例)
修改 settings.py:
python
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}4. 创建数据模型
编辑 myapp/models.py:
python
from django.db import models
class Article(models.Model):
title = models.CharField(max_length=200)
content = models.TextField()
pub_date = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.title生成迁移文件并同步数据库:
bash
python manage.py makemigrations
python manage.py migrate5. 编写视图与模板
视图(views.py)
python
from django.shortcuts import render
from .models import Article
def article_list(request):
articles = Article.objects.all()
return render(request, 'myapp/article_list.html', {'articles': articles})模板(templates/myapp/article_list.html)
html
<!DOCTYPE html>
<html>
<head>
<title>文章列表</title>
</head>
<body>
<h1>文章列表</h1>
<ul>
{% for article in articles %}
<li>{{ article.title }} - {{ article.pub_date }}</li>
{% endfor %}
</ul>
</body>
</html>6. 配置 URL 路由
应用路由(myapp/urls.py)
python
from django.urls import path
from . import views
urlpatterns = [
path('articles/', views.article_list, name='article_list'),
]项目路由(myproject/urls.py)
python
from django.contrib import admin
from django.urls import include, path
urlpatterns = [
path('admin/', admin.site.urls),
path('myapp/', include('myapp.urls')),
]7. 管理后台
注册模型到后台(myapp/admin.py):
python
from django.contrib import admin
from .models import Article
admin.site.register(Article)创建管理员账号并启动服务:
bash
python manage.py createsuperuser
python manage.py runserver访问 http://localhost:8000/admin 管理数据。
8. 处理表单提交
表单类(forms.py)
python
from django import forms
from .models import Article
class ArticleForm(forms.ModelForm):
class Meta:
model = Article
fields = ['title', 'content']视图逻辑
python
from django.shortcuts import redirect
from .forms import ArticleForm
def create_article(request):
if request.method == 'POST':
form = ArticleForm(request.POST)
if form.is_valid():
form.save()
return redirect('article_list')
else:
form = ArticleForm()
return render(request, 'myapp/create_article.html', {'form': form})9. 静态文件处理
在 settings.py 中配置:
python
STATIC_URL = '/static/'
STATICFILES_DIRS = [BASE_DIR / "static"]模板中加载静态文件:
html
{% load static %}
<link rel="stylesheet" href="{% static 'css/style.css' %}">10. 部署到生产环境
使用 Gunicorn + Nginx
安装 Gunicorn:
bashpip install gunicorn配置 Nginx:
nginxserver { listen 80; server_name example.com; location /static/ { alias /path/to/your/static/; } location / { proxy_pass http://localhost:8000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } }启动服务:
bashgunicorn myproject.wsgi:application -w 4 -b 0.0.0.0:8000
11. 高级功能
REST API(使用 Django REST Framework)
安装 DRF:
bashpip install djangorestframework创建序列化器(serializers.py):
pythonfrom rest_framework import serializers from .models import Article class ArticleSerializer(serializers.ModelSerializer): class Meta: model = Article fields = '__all__'编写 API 视图(views.py):
pythonfrom rest_framework import generics from .models import Article from .serializers import ArticleSerializer class ArticleListCreateView(generics.ListCreateAPIView): queryset = Article.objects.all() serializer_class = ArticleSerializer
12. 常见问题解决
- 数据库连接失败:检查
settings.py中的数据库配置和权限。 - 静态文件 404:确保
DEBUG=False时运行python manage.py collectstatic。 - 跨域问题:使用
django-cors-headers中间件:python# settings.py INSTALLED_APPS = [..., 'corsheaders'] MIDDLEWARE = ['corsheaders.middleware.CorsMiddleware', ...] CORS_ALLOW_ALL_ORIGINS = True # 开发环境临时允许所有
通过 Django,可快速构建功能完善的 Web 应用,适用于内容管理系统、API 服务和企业级应用。对于更高性能需求,可结合缓存(Redis)和异步任务(Celery)。