Python Django 框架
外观
Python Django框架[编辑 | 编辑源代码]
Django 是一个高级的 Python Web框架,遵循“不重复自己”(DRY, Don't Repeat Yourself)原则,旨在帮助开发者快速构建安全、可扩展的Web应用程序。它提供了强大的内置功能,如ORM(对象关系映射)、模板引擎、表单处理和认证系统,使开发者能够专注于业务逻辑而非底层实现。
概述[编辑 | 编辑源代码]
Django 由 Adrian Holovaty 和 Simon Willison 于2003年开发,并于2005年开源。它采用 MTV(模型-模板-视图) 模式,类似于 MVC,但略有不同:
- 模型(Model):定义数据结构,与数据库交互。
- 模板(Template):处理前端展示逻辑。
- 视图(View):控制业务逻辑和请求响应。
Django 的核心优势包括:
安装与配置[编辑 | 编辑源代码]
安装 Django 使用 pip:
pip install django
创建新项目:
django-admin startproject myproject
cd myproject
python manage.py runserver
访问 http://127.0.0.1:8000/
可看到默认欢迎页面。
核心组件[编辑 | 编辑源代码]
模型(Model)[编辑 | 编辑源代码]
Django 的 ORM 允许通过 Python 类定义数据库表。例如,定义一个博客文章模型:
from django.db import models
class Post(models.Model):
title = models.CharField(max_length=200)
content = models.TextField()
published_date = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.title
运行迁移以创建表:
python manage.py makemigrations
python manage.py migrate
视图(View)[编辑 | 编辑源代码]
视图处理请求并返回响应。示例:
from django.shortcuts import render
from .models import Post
def post_list(request):
posts = Post.objects.all()
return render(request, 'blog/post_list.html', {'posts': posts})
模板(Template)[编辑 | 编辑源代码]
模板文件(如 blog/post_list.html
):
<!DOCTYPE html>
<html>
<head>
<title>Blog</title>
</head>
<body>
{% for post in posts %}
<h2>{{ post.title }}</h2>
<p>{{ post.content }}</p>
{% endfor %}
</body>
</html>
URL路由[编辑 | 编辑源代码]
在 urls.py
中配置路由:
from django.urls import path
from . import views
urlpatterns = [
path('posts/', views.post_list, name='post_list'),
]
实际案例:博客系统[编辑 | 编辑源代码]
以下是一个简单的博客系统实现步骤:
1. 创建模型(如上文的 Post
)。
2. 注册模型到 Admin:
from django.contrib import admin
from .models import Post
admin.site.register(Post)
3. 创建视图和模板。 4. 配置 URL。
访问 /admin
可管理博客文章。
高级功能[编辑 | 编辑源代码]
REST API 开发[编辑 | 编辑源代码]
使用 Django REST Framework(DRF):
from rest_framework import serializers, viewsets
from .models import Post
class PostSerializer(serializers.ModelSerializer):
class Meta:
model = Post
fields = '__all__'
class PostViewSet(viewsets.ModelViewSet):
queryset = Post.objects.all()
serializer_class = PostSerializer
中间件[编辑 | 编辑源代码]
自定义中间件示例:
class SimpleMiddleware:
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
response = self.get_response(request)
response['X-Custom-Header'] = "Hello"
return response
性能优化[编辑 | 编辑源代码]
- 使用
select_related
和prefetch_related
减少数据库查询。 - 启用缓存:
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.redis.RedisCache',
'LOCATION': 'redis://127.0.0.1:6379',
}
}
常见问题[编辑 | 编辑源代码]
问题 | 解决方案 |
---|---|
数据库连接失败 | 检查 settings.py 中的 DATABASES 配置
|
静态文件未加载 | 运行 python manage.py collectstatic
|
URL 匹配错误 | 使用 path() 或 re_path() 精确匹配
|
总结[编辑 | 编辑源代码]
Django 是一个功能全面、开发效率高的 Web 框架,适合从简单博客到企业级应用开发。通过其清晰的架构和丰富的文档,开发者可以快速上手并构建复杂系统。