跳转到内容

Python Django 框架

来自代码酷
Admin留言 | 贡献2025年4月28日 (一) 21:14的版本 (Page creation by admin bot)

(差异) ←上一版本 | 已核准修订 (差异) | 最后版本 (差异) | 下一版本→ (差异)

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_relatedprefetch_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 框架,适合从简单博客到企业级应用开发。通过其清晰的架构和丰富的文档,开发者可以快速上手并构建复杂系统。