Django 框架全面解读及实战示例

Django 框架全面解读及实战示例

Django 框架全面解读及实战示例Django 是一个功能强大的 Python Web 框架,以其“快速开发、高效、优雅”而著称。它提供了从 Web 开发的数据库处理、模板引擎到路由管理的全套解决方案,特别适合构建中小型项目和快速迭代开发。

1. Django 简介1.1 什么是 Django?Django 是由 Python 编写的开源 Web 应用框架,其核心理念是 DRY (Don’t Repeat Yourself),即“不要重复自己”。通过内置的强大功能,Django 提供了高度集成的工具链,开发者无需重复造轮子即可完成复杂应用。

1.2 Django 的主要特点快速开发:通过内置的 ORM 和管理后台,极大简化了常见的开发任务。高度可扩展:支持插件式扩展,开发者可根据需求引入第三方库。内置管理系统:自动生成的管理后台极大提升了开发效率。安全性强:默认防范 SQL 注入、跨站脚本(XSS)、跨站请求伪造(CSRF)等常见攻击。多种数据库支持:支持 MySQL、PostgreSQL、SQLite 等。2. Django 的基本架构Django 遵循 MVC (Model-View-Controller) 的设计模式,实际实现中被称为 MTV:

M (Model):数据层,负责与数据库交互。T (Template):展示层,负责呈现用户界面。V (View):业务逻辑层,处理请求和返回响应。3. 快速上手 Django3.1 安装 Django确保已安装 Python 3.8 及以上版本。

代码语言:javascript复制pip install django3.2 创建 Django 项目运行以下命令创建一个新的项目:

代码语言:javascript复制django-admin startproject myproject项目结构如下:

代码语言:javascript复制myproject/

manage.py # 项目管理入口

myproject/

__init__.py # 包初始化文件

settings.py # 配置文件

urls.py # URL 路由配置

wsgi.py # 部署文件3.3 启动开发服务器进入项目目录并运行:

代码语言:javascript复制python manage.py runserver打开浏览器访问 http://127.0.0.1:8000,即可看到 Django 的默认欢迎页面。

4. 构建第一个应用:博客系统4.1 创建应用在项目中创建一个名为 blog 的应用:

代码语言:javascript复制python manage.py startapp blog创建后,需在 settings.py 的 INSTALLED_APPS 中注册:

代码语言:javascript复制INSTALLED_APPS = [

...

'blog',

]4.2 定义模型 (Model)在 blog/models.py 文件中定义博客模型:

代码语言:javascript复制from django.db import models

class BlogPost(models.Model):

title = models.CharField(max_length=100) # 博客标题

content = models.TextField() # 博客内容

created_at = models.DateTimeField(auto_now_add=True) # 创建时间

updated_at = models.DateTimeField(auto_now=True) # 更新时间

def __str__(self):

return self.title生成迁移文件并应用到数据库:

代码语言:javascript复制python manage.py makemigrations

python manage.py migrate4.3 配置管理后台在 blog/admin.py 注册模型:

代码语言:javascript复制from django.contrib import admin

from .models import BlogPost

admin.site.register(BlogPost)启动服务器后,访问 http://127.0.0.1:8000/admin 即可使用 Django 的管理后台添加博客文章。

4.4 定义视图 (View) 和路由在 blog/views.py 中定义视图函数:

代码语言:javascript复制from django.shortcuts import render

from .models import BlogPost

def blog_list(request):

posts = BlogPost.objects.all() # 查询所有博客

return render(request, 'blog_list.html', {'posts': posts})在 blog/urls.py 配置路由:

代码语言:javascript复制from django.urls import path

from . import views

urlpatterns = [

path('', views.blog_list, name='blog_list'),

]在项目的 urls.py 中引入 blog 的路由:

代码语言:javascript复制from django.contrib import admin

from django.urls import path, include

urlpatterns = [

path('admin/', admin.site.urls),

path('blog/', include('blog.urls')),

]4.5 创建模板在 blog/templates 目录下创建模板文件 blog_list.html:

代码语言:javascript复制

博客列表

博客列表

    {% for post in posts %}

  • {{ post.title }}

    {{ post.content }}

    创建于 {{ post.created_at }}

  • {% endfor %}

启动服务器,访问 http://127.0.0.1:8000/blog,即可看到博客列表页面。

5. 高级功能5.1 用户认证Django 提供了完善的用户认证系统:

注册:django.contrib.auth.forms.UserCreationForm登录:django.contrib.auth.views.LoginView权限管理:通过 Permission 和 Group 模型实现。5.2 API 开发Django 可以通过 Django REST Framework (DRF) 快速构建 API 服务:

代码语言:javascript复制pip install djangorestframework创建 RESTful API 的示例:

代码语言:javascript复制from rest_framework import serializers, viewsets

from .models import BlogPost

class BlogPostSerializer(serializers.ModelSerializer):

class Meta:

model = BlogPost

fields = '__all__'

class BlogPostViewSet(viewsets.ModelViewSet):

queryset = BlogPost.objects.all()

serializer_class = BlogPostSerializer配置路由:

代码语言:javascript复制from rest_framework.routers import DefaultRouter

from blog.views import BlogPostViewSet

router = DefaultRouter()

router.register(r'posts', BlogPostViewSet)

urlpatterns = [

path('api/', include(router.urls)),

]5.3 测试Django 提供了内置的单元测试工具:

代码语言:javascript复制from django.test import TestCase

from .models import BlogPost

class BlogPostTestCase(TestCase):

def setUp(self):

BlogPost.objects.create(title="测试标题", content="测试内容")

def test_blogpost_creation(self):

post = BlogPost.objects.get(title="测试标题")

self.assertEqual(post.content, "测试内容")6. 总结通过 Django,我们可以快速搭建功能强大的 Web 应用。从模型设计到模板渲染,Django 提供了完善的工具链,极大地降低了开发复杂度。如果你想进一步了解,可以阅读 Django 官方文档并尝试完成更多功能,如权限管理、第三方集成等。

期待你的 Django 项目! 🎉

相关推荐

网络安全学习笔记之文件上传

网络安全学习笔记之文件上传

07-29 👁️‍🗨️ 7792
深入理解EIGRP协议及其组件

深入理解EIGRP协议及其组件

10-18 👁️‍🗨️ 5901
猎头如何成为职业高手?快速入门技巧有哪些?
英雄联盟各类宝箱获取方法是什么?如何快速获得宝箱?
Word 中的宏是什么?为什么它很重要?存在哪些类型的宏?它们由什么组成?它们是如何创建和执行的?