使用Django框架构建Python Web应用

前言

Django 个高级Python Web框架,遵循MTV(Model-Template-View)设计模式:

  • 模型(Model):数据层,定义数据结构

  • 模板(Template):表现层,处理用户界面

  • 视图(View):业务逻辑层,处理请求响应

Django的核心作用

  1. 全栈Web开发:一站式解决前后端需求

  2. ORM数据库操作:用Python类代替SQL查询

  3. 自动化管理界面:自动生成后台管理系统

  4. URL路由系统:优雅的URL设计

  5. 表单处理:数据验证与清洗

  6. 用户认证系统:完整的权限管理方案

  7. 国际化支持:多语言应用轻松实现

环境搭建

复制代码
# 使用pip安装最新版Django
pip install django

# 验证安装
django-admin --version
# 创建名为mysite的项目
django-admin startproject mysite

# 项目结构
mysite/
    manage.py         # 项目管理脚本
    mysite/           # 项目配置目录
        __init__.py
        settings.py   # 全局配置
        urls.py       # 主路由配置
        asgi.py       # ASGI配置
        wsgi.py       # WSGI配置

运行

复制代码
# 进入项目目录
cd mysite

# 启动开发服务器
python manage.py runserver

# 访问 http://127.0.0.1:8000

创建Django应用

应用是Django项目的功能模块,一个项目可包含多个应用。

创建应用

python manage.py startapp blog

注册应用
复制代码
# mysite/settings.py
INSTALLED_APPS = [
    # ...
    'blog.apps.BlogConfig',  # 添加新应用
]

示例

1. 定义数据模型
复制代码
# blog/models.py
from django.db import models
from django.contrib.auth.models import User

class Post(models.Model):
    title = models.CharField(max_length=100)
    content = models.TextField()
    author = models.ForeignKey(User, on_delete=models.CASCADE)
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

    def __str__(self):
        return self.title
2. 数据库迁移
复制代码
# 生成迁移文件
python manage.py makemigrations

# 应用数据库变更
python manage.py migrate
3. 创建视图
复制代码
# blog/views.py
from django.views.generic import ListView, DetailView
from .models import Post

class PostListView(ListView):
    model = Post
    template_name = 'blog/post_list.html'
    context_object_name = 'posts'
    ordering = ['-created_at']
    paginate_by = 5

class PostDetailView(DetailView):
    model = Post
    template_name = 'blog/post_detail.html'
4. 配置URL路由
复制代码
# blog/urls.py
from django.urls import path
from .views import PostListView, PostDetailView

urlpatterns = [
    path('', PostListView.as_view(), name='post-list'),
    path('post/<int:pk>/', PostDetailView.as_view(), name='post-detail'),
]

# mysite/urls.py
from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('blog/', include('blog.urls')),
]

结尾

Django为Web开发提供了全面而高效的解决方案,从简单的博客系统到复杂的电子商务平台都能胜任。通过本文的学习,本文主要介绍了Django框架的核心概念与架构,完整的应用开发流程,模型-视图-模板的协作方式

相关推荐
恋猫de小郭5 分钟前
Flutter Android 改动:APK 不再允许通过 Intent 动态修改 Engine 参数
android·前端·flutter
东莞市云毅网络有限公司6 分钟前
用 Python 给官网做字段级变更监控:快照、比对与变更清单
python·数据清洗·rag·企业知识库·文档解析
ck01357913 分钟前
视频转 GIF 的基本流程与文件大小优化
前端·测试工具·html·音视频·视频
郝学胜-神的一滴16 分钟前
Web安全入门:读懂Web世界里的攻防
前端·网络·后端·安全·web安全·hibernate
Amos_Web21 分钟前
Rspack 源码解析(二十四):AssetPlugin 如何让图片同时是「URL 字符串」和「真实文件」
前端·rust·前端框架
lexiangqicheng26 分钟前
1,自定义表单通俗理解-PC设计APP渲染
java·前端·javascript
quantdash_cc28 分钟前
如何给自己的量化策略增加独立数据层?从数据获取到策略解耦的 Python 实践
开发语言·python·数据分析·量化交易·股票数据·quantdash
NeoGressAI外贸数字化29 分钟前
外贸独立站3类页面合格度,怎么用脚本一次跑完
开发语言·python
其实防守也摸鱼34 分钟前
Codex 下载与本地部署实战指南
linux·服务器·前端·数据库·算法·ai
benchmark_cc38 分钟前
批量获取股票数据后,如何统一转换成 DataFrame?从数据结构到量化研究的完整实践
数据结构·python·数据分析·量化交易·股票数据·quantdash