使用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框架的核心概念与架构,完整的应用开发流程,模型-视图-模板的协作方式

相关推荐
用户69371750013843 小时前
Google 正在“收紧侧加载”:陌生 APK 安装或需等待 24 小时
android·前端
蓝帆傲亦3 小时前
Web 前端搜索文字高亮实现方法汇总
前端
用户69371750013843 小时前
Room 3.0:这次不是升级,是重来
android·前端·google
qq_417695054 小时前
机器学习与人工智能
jvm·数据库·python
漫随流水4 小时前
旅游推荐系统(view.py)
前端·数据库·python·旅游
yy我不解释5 小时前
关于comfyui的mmaudio音频生成插件时时间不一致问题(一)
python·ai作画·音视频·comfyui
踩着两条虫6 小时前
VTJ.PRO 核心架构全公开!从设计稿到代码,揭秘AI智能体如何“听懂人话”
前端·vue.js·ai编程
紫丁香6 小时前
AutoGen详解一
后端·python·flask
FreakStudio6 小时前
不用费劲编译ulab了!纯Mpy矩阵micronumpy库,单片机直接跑
python·嵌入式·边缘计算·电子diy
jzlhll1237 小时前
kotlin Flow first() last()总结
开发语言·前端·kotlin