Python Web开发:Django框架实战教程
(4) feilong.org 修订于2026-07-07 14:45:09 python教程Django框架入门与实战指南
1. 环境准备
在开始之前,确保已安装Python 3.8+。通过以下命令验证环境:
|
1 |
python --version |
安装Django框架:
|
1 |
pip install django |
创建虚拟环境(推荐):
|
1 2 3 |
python -m venv myenv source myenv/bin/activate Linux/MacOS myenv\Scripts\activate Windows |
2. 创建第一个项目
使用Django命令行工具生成项目骨架:
|
1 2 3 |
django-admin startproject mysite cd mysite python manage.py runserver |
访问
|
1 |
http://127.0.0.1:8000/ |
验证是否显示默认欢迎页面。
3. 项目结构解析
典型Django项目包含以下目录:
- manage.py:管理脚本入口
- mysite/:项目主目录
- settings.py:配置文件(数据库、静态文件路径等)
- urls.py:URL路由配置
- wsgi.py:生产环境部署接口
4. 创建应用与模型定义
创建新应用:
|
1 |
python manage.py startapp blog |
在
|
1 |
blog/models.py |
中定义数据模型:
|
1 2 3 4 5 6 7 8 9 |
from django.db import models class Post(models.Model): title = models.CharField(max_length=200) content = models.TextField() created_at = models.DateTimeField(auto_now_add=True) def str(self): return self.title |
执行数据库迁移:
|
1 2 |
python manage.py makemigrations python manage.py migrate |
5. 视图与URL路由
在
|
1 |
blog/views.py |
中编写业务逻辑:
|
1 2 3 4 5 6 |
from django.shortcuts import render from .models import Post def post_list(request): posts = Post.objects.all().order_by('-created_at') return render(request, 'blog/post_list.html', {'posts': posts}) |
配置URL路由(
|
1 |
blog/urls.py |
):
|
1 2 3 4 5 6 |
from django.urls import path from . import views urlpatterns = [ path('', views.post_list, name='post_list'), ] |
将应用注册到主项目的 urls.py:
|
1 2 3 4 5 6 7 |
from django.contrib import admin from django.urls import path, include urlpatterns = [ path('admin/', admin.site.urls), path('', include('blog.urls')), ] |
6. 模板引擎与静态文件
在
|
1 |
templates/blog/ |
目录创建HTML模板:
|
1 2 3 4 5 6 7 |
<!-- templates/blog/post_list.html --> <h1>博客列表</h1> <ul> {% for post in posts %} <li>{{ post.title }} - {{ post.created_at }}</li> {% endfor %} </ul> |
配置静态文件路径(settings.py):
|
1 2 |
STATIC_URL = '/static/' STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')] |
7. 高级功能实现
表单处理
创建表单类(
|
1 |
blog/forms.py |
):
|
1 2 3 4 5 6 7 |
from django import forms from .models import Post class PostForm(forms.ModelForm): class Meta: model = Post fields = ['title', 'content'] |
在视图中集成表单逻辑:
|
1 2 3 4 5 6 7 8 9 |
def create_post(request): if request.method == 'POST': form = PostForm(request.POST) if form.is_valid(): form.save() return redirect('post_list') else: form = PostForm() return render(request, 'blog/create_post.html', {'form': form}) |
用户认证系统
集成Django内置的认证模块:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
from django.contrib.auth import authenticate, login def login_view(request): if request.method == 'POST': username = request.POST['username'] password = request.POST['password'] user = authenticate(request, username=username, password=password) if user is not None: login(request, user) return redirect('post_list') else: 显示错误信息 return render(request, 'blog/login.html') |
8. 部署生产环境
使用Gunicorn与Nginx
安装依赖:
|
1 |
pip install gunicorn |
配置 Procfile(部署平台如Heroku需此文件):
|
1 |
web: gunicorn mysite.wsgi --bind 0.0.0.0:$PORT |
配置Nginx反向代理(示例配置):
|
1 2 3 4 5 6 7 8 9 10 |
server { listen 80; server_name example.com; location / { proxy_pass http://127.0.0.1:8000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } } |
9. 最佳实践建议
- 安全性:启用CSRF保护,使用Django内置的
|
1 |
@login_required |
装饰器
- 性能优化:配置缓存(settings.CACHES),使用数据库索引
- 代码规范:遵循PEP8标准,利用Django管理命令(如 makemigrations)
通过以上步骤,开发者可以快速构建功能完善的Web应用。建议进一步学习Django REST framework实现API接口,或探索Celery进行异步任务处理。
更新网址:https://feilong.org/django-web-development-tutorial
最初发布:20260707 02:45:09 feilong.org 于广州
加入收藏夹,查看更方便。