杰瑞科技汇

python django开发web

目录

  1. 为什么选择 Django?
  2. 环境准备
    • 安装 Python
    • 安装 Django
    • 创建虚拟环境(强烈推荐)
  3. Django 项目结构详解
  4. 核心概念:模型、视图、模板
  5. 实战:构建一个简单的博客应用
    • 步骤 1:创建项目和 App
    • 步骤 2:定义模型
    • 步骤 3:创建视图和 URL 路由
    • 步骤 4:编写模板
    • 步骤 5:数据库迁移
    • 步骤 6:运行服务器并查看结果
  6. Django Admin 后台
  7. 静态文件处理
  8. 表单处理
  9. 进阶主题
  10. 总结与学习资源

为什么选择 Django?

Django 遵循 "DRY" (Don't Repeat Yourself) 原则,并提供了许多开箱即用的功能:

  • ORM (Object-Relational Mapper):用 Python 类来定义数据库表结构,无需编写 SQL。
  • 自动生成的后台管理界面:几行代码就能为你创建一个功能强大的后台。
  • 优雅的 URL 设计:URL 与 Python 代码解耦,清晰易读。
  • 模板引擎:分离业务逻辑和前端展示。
  • 安全防护:内置了 CSRF、XSS、SQL 注入等 Web 常见攻击的防护。
  • 可扩展性:从个人博客到大型社交网络(如 Instagram),Django 都能胜任。

环境准备

安装 Python

Django 需要 Python 3.8 或更高版本,请确保你已经安装了 Python,可以在终端/命令行中输入:

python --version
# 或
python3 --version

创建虚拟环境(强烈推荐)

虚拟环境可以隔离不同项目的依赖,避免包冲突。

  1. 创建虚拟环境

    # 在你的项目文件夹外执行
    mkdir my_django_project
    cd my_django_project
    python -m venv venv
    • venv 是虚拟环境的文件夹名,你可以自定义。
  2. 激活虚拟环境

    • Windows:
      .\venv\Scripts\activate
    • macOS / Linux:
      source venv/bin/activate

      激活后,你的终端提示符前会出现 (venv)

安装 Django

在激活的虚拟环境中,使用 pip 安装 Django:

pip install django

Django 项目结构详解

当你创建一个 Django 项目后,你会看到类似这样的文件结构:

myproject/
├── manage.py          # 命令行工具,用于与项目交互(如运行服务器、迁移数据库)
├── myproject/         # 项目配置包
│   ├── __init__.py
│   ├── asgi.py        # 用于运行 ASGI 兼容的 Web 服务器
│   ├── settings.py    # 项目的核心配置文件(数据库、时区、应用等)
│   ├── urls.py        # 项目的根 URL 配置
│   └── wsgi.py        # 用于运行 WSGI 兼容的 Web 服务器
└── venv/              # 虚拟环境文件夹

核心概念:

  • 项目:一个完整的 Web 应用。myproject 就是一个项目。
  • 应用:项目中的一个独立模块,实现特定功能(如博客、用户系统、商店),一个项目可以包含多个应用。

核心概念:模型、视图、模板

理解这三个概念是掌握 Django 的关键。

  • 模型:定义你的数据结构,它就像一个数据库表的“蓝图”,告诉 Django 如何存储和操作数据,每个模型对应一个数据库表。
  • 视图:接收 Web 请求,处理业务逻辑(如查询数据库、计算数据),然后返回一个响应,响应通常是渲染后的 HTML 页面。
  • 模板:HTML 文件,用于展示数据,它包含特殊的语法(如 {{ variable }}{% tag %}),用于将视图传递过来的数据动态地插入到 HTML 中。

工作流程

  1. 用户通过浏览器访问一个 URL。
  2. Django 的 urls.py 检查 URL,将其映射到一个特定的 视图 函数。
  3. 视图 函数执行代码,可能从 模型 中获取数据。
  4. 视图 将数据传递给一个 模板
  5. 模板 渲染最终的 HTML 页面。
  6. Django 将 HTML 页面作为响应发送回用户的浏览器。

MVT 架构:这其实是 Model-View-Template (MVT) 架构,但 Django 将接收请求和返回响应的部分称为 "View",而将业务逻辑部分称为 "View Function",这一点初学者可能会混淆。


实战:构建一个简单的博客应用

我们将创建一个博客,可以显示文章列表和单篇文章详情。

步骤 1:创建项目和 App

  1. 创建项目

    # 确保你在虚拟环境中
    django-admin startproject myblog
    cd myblog
  2. 创建 App

    python manage.py startapp blog
  3. 注册 App:打开 myblog/settings.py,在 INSTALLED_APPS 列表中添加你的新应用:

    # myblog/settings.py
    INSTALLED_APPS = [
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'blog',  # 添加这一行
    ]

步骤 2:定义模型

打开 blog/models.py,定义文章模型:

# blog/models.py
from django.db import models
from django.contrib.auth.models import User
class Post(models.Model):= models.CharField(max_length=200)
    content = models.TextField()
    created_at = models.DateTimeField(auto_now_add=True)
    author = models.ForeignKey(User, on_delete=models.CASCADE, default=1)
    def __str__(self):
        return self.title

步骤 3:创建视图和 URL 路由

  1. 创建视图:打开 blog/views.py,编写视图函数来获取文章列表和详情。

    # blog/views.py
    from django.shortcuts import render, get_object_or_404
    from .models import Post
    def post_list(request):
        posts = Post.objects.all().order_by('-created_at')
        return render(request, 'blog/post_list.html', {'posts': posts})
    def post_detail(request, pk):
        post = get_object_or_404(Post, pk=pk)
        return render(request, 'blog/post_detail.html', {'post': post})
  2. 配置 App 的 URL:在 blog 文件夹下创建一个 urls.py 文件。

    # blog/urls.py
    from django.urls import path
    from . import views
    urlpatterns = [
        path('', views.post_list, name='post_list'),
        path('post/<int:pk>/', views.post_detail, name='post_detail'),
    ]
  3. 配置项目的主 URL:打开 myblog/urls.py,引入 blog 应用的 URL。

    # myblog/urls.py
    from django.contrib import admin
    from django.urls import path, include
    urlpatterns = [
        path('admin/', admin.site.urls),
        path('', include('blog.urls')),  # 添加这一行
    ]

步骤 4:编写模板

  1. 创建模板文件夹:在 blog 文件夹下创建 templates/blog/ 目录。

    myblog/
    └── blog/
        └── templates/
            └── blog/
                └── post_list.html
                └── post_detail.html
  2. 创建 post_list.html

    <!-- blog/templates/blog/post_list.html -->
    <!DOCTYPE html>
    <html lang="zh">
    <head>
        <meta charset="UTF-8">
        <title>我的博客</title>
    </head>
    <body>
        <h1>文章列表</h1>
        <ul>
            {% for post in posts %}
                <li>
                    <a href="{% url 'post_detail' pk=post.pk %}">{{ post.title }}</a>
                </li>
            {% empty %}
                <li>暂无文章</li>
            {% endfor %}
        </ul>
    </body>
    </html>
  3. 创建 post_detail.html

    <!-- blog/templates/blog/post_detail.html -->
    <!DOCTYPE html>
    <html lang="zh">
    <head>
        <meta charset="UTF-8">
        <title>{{ post.title }}</title>
    </head>
    <body>
        <h1>{{ post.title }}</h1>
        <p>作者: {{ post.author }}</p>
        <p>发布时间: {{ post.created_at }}</p>
        <hr>
        <p>{{ post.content }}</p>
        <a href="{% url 'post_list %}">返回列表</a>
    </body>
    </html>

步骤 5:数据库迁移

Django 需要将你定义的模型转换成实际的数据库表。

  1. 生成迁移文件
    python manage.py makemigrations
  2. 应用迁移
    python manage.py migrate

步骤 6:运行服务器并查看结果

  1. 创建超级用户(用于 Admin 后台)

    python manage.py createsuperuser
    # 按提示输入用户名、邮箱和密码
  2. 启动开发服务器

    python manage.py runserver
  3. 访问网站

    • 博客首页:打开浏览器访问 http://127.0.0.1:8000/
    • Admin 后台:访问 http://127.0.0.1:8000/admin/,用你刚刚创建的超级用户登录,你可以为 Post 模型添加一些测试文章。

Django Admin 后台

我们已经看到了 Admin 后台的强大之处,它让你可以轻松管理网站的数据。

  • 注册模型:为了让 Post 模型在 Admin 后台显示,打开 blog/admin.py

    # blog/admin.py
    from django.contrib import admin
    from .models import Post
    admin.site.register(Post)

    刷新 Admin 页面,你就可以看到 Posts 并进行增删改查了。


静态文件处理

静态文件是 CSS、JavaScript、图片等文件,Django 默认会在 static 文件夹中查找它们。

  1. 创建静态文件目录

    myblog/
    └── blog/
        └── static/
            └── blog/
                └── css/
                    └── style.css
  2. 在模板中使用静态文件:在模板开头加载 static

    <!-- blog/templates/blog/post_list.html -->
    {% load static %}
    <!DOCTYPE html>
    <html lang="zh">
    <head>
        <meta charset="UTF-8">
        <title>我的博客</title>
        <link rel="stylesheet" href="{% static 'blog/css/style.css' %}">
    </head>
    ...

表单处理

Django 的表单处理非常优雅,它自动生成 HTML 表单、验证用户输入并清理数据。

  1. 创建表单类:在 blog 目录下创建 forms.py

    # blog/forms.py
    from django import forms
    from .models import Post
    class PostForm(forms.ModelForm):
        class Meta:
            model = Post
            fields = ('title', 'content')
  2. 在视图中使用表单:修改 blog/views.py,添加创建文章的视图。

  3. 在模板中渲染表单:创建一个 post_new.html 模板,使用 {{ form.as_p }} 来渲染表单字段。


进阶主题

当你掌握了基础后,可以探索更多高级特性:

  • 类视图:用类代替函数来组织视图代码,更清晰、可复用。
  • Django REST Framework:轻松构建强大的 API。
  • 用户认证系统:Django 内置了完善的用户注册、登录、注销和权限管理。
  • 中间件:在请求和响应之间执行代码的钩子,用于处理会话、认证等。
  • 缓存:提升网站性能。
  • 部署:将你的应用部署到生产环境(如 Nginx + Gunicorn + Docker)。

总结与学习资源

Django 是一个功能全面的“全能型”框架,它能让你专注于业务逻辑,而将底层细节(如数据库、安全、管理后台)交给框架处理,通过“模型-视图-模板”的架构,它提供了清晰的开发模式。

推荐学习资源

  1. 官方文档Django Documentation (强烈推荐,最权威、最全面)
  2. Django Girls Tutorialhttps://tutorial.djangogirls.org/zh/ (非常适合初学者的交互式教程)
  3. Coursera / Udemy 课程:搜索 "Django Web Development",有许多高质量的付费课程。
  4. 开源项目:在 GitHub 上找一些小型的 Django 项目,阅读源码是学习的最佳途径之一。

祝你 Django 学习愉快!

分享:
扫描分享到社交APP
上一篇
下一篇