Django 框架:从零开始构建一个功能完善的 Web 应用

好的,各位朋友们,今天咱们就来聊聊 Django 这个“瑞士军刀”级别的 Web 框架,一起从零开始,打造一个功能完善的 Web 应用。别害怕,咱不搞那些枯燥的理论,就当老朋友唠嗑,轻松愉快地把 Django 玩转起来!😉

开场白:Django,Web 开发的“效率神器”

各位,想象一下,你要盖一栋房子。如果你啥都自己来,从搬砖到砌墙,那得累死个人!但是,如果你有了 Django 这个“建筑队”,它帮你搞定了地基、框架,甚至连水电线路都预留好了,你只需要专注于装修和个性化设计,是不是瞬间轻松多了?

Django 就是 Web 开发界的“建筑队”,它是一个高级 Python Web 框架,鼓励快速开发和干净、实用的设计。它帮你处理了大量的底层工作,比如数据库连接、用户认证、模板渲染等等,让你能更专注于业务逻辑,高效地构建你的 Web 应用。

第一步:磨刀不误砍柴工,环境搭建要做好

古人云:“工欲善其事,必先利其器。” 在开始 Django 之旅之前,咱们得先准备好工具。

  1. Python: Django 是 Python 的框架,所以你得先安装 Python。建议使用 Python 3.6+ 版本。

    • Windows:直接去 Python 官网下载安装包,记得勾选 "Add Python to PATH"。
    • macOS:通常自带 Python,但建议使用 Homebrew 安装最新版本。
    • Linux:各个发行版都有自己的包管理器,比如 apt、yum,直接安装即可。
  2. pip: Python 的包管理工具,用来安装 Django 和其他依赖库。通常 Python 安装时会自带 pip,如果没有,可以手动安装。

  3. Virtualenv(可选但强烈推荐): 虚拟环境可以让你为每个项目创建一个独立的环境,避免不同项目之间的依赖冲突。

    • 安装:pip install virtualenv
    • 创建:virtualenv myprojectenv
    • 激活:source myprojectenv/bin/activate (Linux/macOS) 或 myprojectenvScriptsactivate (Windows)
  4. Django: 万事俱备,只欠 Django!

    • 安装:pip install django

第二步:创建你的第一个 Django 项目,Hello World!

一切准备就绪,咱们来创建第一个 Django 项目,感受一下 Django 的魅力!

  1. 创建项目: 在命令行中输入:django-admin startproject mysite。 这会在当前目录下创建一个名为 mysite 的文件夹,里面包含了 Django 项目的基本结构。

  2. 项目结构: 咱们来看看 mysite 文件夹里的内容:

    • mysite/: 项目的容器目录。
    • manage.py: 一个命令行工具,用于管理 Django 项目。
    • mysite/__init__.py: 一个空文件,告诉 Python 这个目录应该被认为是一个 Python 包。
    • mysite/settings.py: 项目的配置文件,包含数据库设置、静态文件配置等等。
    • mysite/urls.py: 项目的 URL 路由,定义了 URL 和视图函数之间的映射关系。
    • mysite/asgi.py: 异步服务器网关接口。
    • mysite/wsgi.py: Web 服务器网关接口,用于部署项目到生产环境。
  3. 运行开发服务器: 进入 mysite 目录,运行 python manage.py runserver

    • 这时,你会看到类似 Starting development server at http://127.0.0.1:8000/ 的信息。
    • 在浏览器中输入 http://127.0.0.1:8000/,如果看到 Django 的欢迎页面,恭喜你,你的第一个 Django 项目跑起来了!🎉

第三步:创建你的第一个 Django 应用,让它“动起来”!

Django 项目就像一个大的容器,可以包含多个应用。每个应用负责一个特定的功能模块,比如博客、论坛、电商等等。

  1. 创建应用: 咱们来创建一个名为 myblog 的应用:python manage.py startapp myblog。 这会在 mysite 目录下创建一个名为 myblog 的文件夹,里面包含了应用的基本结构。

  2. 应用结构: myblog 文件夹里的内容:

    • myblog/__init__.py: 一个空文件,告诉 Python 这个目录应该被认为是一个 Python 包。
    • myblog/admin.py: 用于配置 Django 管理后台。
    • myblog/apps.py: 应用的配置信息。
    • myblog/migrations/: 用于数据库迁移。
    • myblog/models.py: 定义数据模型,也就是数据库的表结构。
    • myblog/tests.py: 编写单元测试。
    • myblog/views.py: 定义视图函数,处理用户的请求,返回响应。
  3. 注册应用: 打开 mysite/settings.py,找到 INSTALLED_APPS,把 'myblog' 添加进去。

    INSTALLED_APPS = [
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'myblog',  # 添加你的应用
    ]
  4. 编写视图函数: 打开 myblog/views.py,编写一个简单的视图函数:

    from django.http import HttpResponse
    
    def index(request):
        return HttpResponse("Hello, world! This is my first Django app.")
  5. 配置 URL 路由:

    • myblog 目录下创建一个 urls.py 文件,内容如下:

      from django.urls import path
      from . import views
      
      urlpatterns = [
          path('', views.index, name='index'),
      ]
    • 打开 mysite/urls.py,引入 myblog 的 URL 路由:

      from django.contrib import admin
      from django.urls import include, path
      
      urlpatterns = [
          path('myblog/', include('myblog.urls')),
          path('admin/', admin.site.urls),
      ]
  6. 访问你的应用: 重新运行开发服务器,在浏览器中输入 http://127.0.0.1:8000/myblog/,如果看到 "Hello, world! This is my first Django app.",说明你的应用已经成功运行了!👏

第四步:模型(Models),数据的“灵魂”

模型是 Django 的核心概念之一,它定义了你的数据结构,也就是数据库的表结构。

  1. 定义模型: 打开 myblog/models.py,定义一个 Article 模型:

    from django.db import models
    
    class Article(models.Model):
        title = models.CharField(max_length=200)
        content = models.TextField()
        pub_date = models.DateTimeField('date published')
    
        def __str__(self):
            return self.title
    • title:文章标题,CharField 类型,最大长度 200。
    • content:文章内容,TextField 类型,可以存储大量文本。
    • pub_date:发布日期,DateTimeField 类型,存储日期和时间。
    • __str__ 方法:定义对象的字符串表示,方便在管理后台查看。
  2. 数据库迁移: Django 使用迁移来管理数据库结构的变化。

    • 创建迁移文件:python manage.py makemigrations myblog

    • 应用迁移:python manage.py migrate

    • Django 会根据你的模型定义,自动创建数据库表。

  3. 配置数据库: 打开 mysite/settings.py,找到 DATABASES,配置数据库连接信息。 Django 默认使用 SQLite,你可以根据需要修改为 MySQL、PostgreSQL 等其他数据库。

    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.sqlite3',
            'NAME': BASE_DIR / 'db.sqlite3',
        }
    }

第五步:管理后台(Admin),数据的“后花园”

Django 提供了强大的管理后台,可以方便地管理你的数据。

  1. 注册模型: 打开 myblog/admin.py,注册 Article 模型:

    from django.contrib import admin
    from .models import Article
    
    admin.site.register(Article)
  2. 创建管理员账号: 运行 python manage.py createsuperuser,按照提示输入用户名、邮箱和密码。

  3. 访问管理后台: 在浏览器中输入 http://127.0.0.1:8000/admin/,使用刚才创建的管理员账号登录。

    • 你可以在管理后台中创建、修改、删除 Article 数据。

第六步:模板(Templates),页面的“灵魂”

模板用于生成 HTML 页面,可以将数据动态地渲染到页面上。

  1. 创建模板目录:myblog 目录下创建一个名为 templates 的文件夹,再在 templates 目录下创建一个名为 myblog 的文件夹(为了避免和其他应用的模板冲突)。

  2. 创建模板文件:myblog/templates/myblog/ 目录下创建一个名为 index.html 的文件,内容如下:

    <!DOCTYPE html>
    <html>
    <head>
        <title>My Blog</title>
    </head>
    <body>
        <h1>Welcome to my blog!</h1>
        <ul>
            {% for article in articles %}
                <li><a href="#">{{ article.title }}</a></li>
            {% endfor %}
        </ul>
    </body>
    </html>
  3. 修改视图函数: 打开 myblog/views.py,修改 index 视图函数:

    from django.shortcuts import render
    from .models import Article
    
    def index(request):
        articles = Article.objects.all()
        context = {'articles': articles}
        return render(request, 'myblog/index.html', context)
  4. 访问你的应用: 重新运行开发服务器,在浏览器中输入 http://127.0.0.1:8000/myblog/,如果看到文章列表,说明你的模板已经成功渲染了!

第七步:表单(Forms),与用户“对话”

表单用于收集用户输入的数据。

  1. 创建表单类:myblog 目录下创建一个名为 forms.py 的文件,内容如下:

    from django import forms
    
    class ArticleForm(forms.Form):
        title = forms.CharField(label="Title", max_length=200)
        content = forms.CharField(label="Content", widget=forms.Textarea)
  2. 修改视图函数: 打开 myblog/views.py,添加一个创建文章的视图函数:

    from django.shortcuts import render, redirect
    from .forms import ArticleForm
    
    def create_article(request):
        if request.method == 'POST':
            form = ArticleForm(request.POST)
            if form.is_valid():
                title = form.cleaned_data['title']
                content = form.cleaned_data['content']
                Article.objects.create(title=title, content=content, pub_date=timezone.now())
                return redirect('index')  # 重定向到文章列表页面
        else:
            form = ArticleForm()
        return render(request, 'myblog/create_article.html', {'form': form})
  3. 创建模板文件:myblog/templates/myblog/ 目录下创建一个名为 create_article.html 的文件,内容如下:

    <!DOCTYPE html>
    <html>
    <head>
        <title>Create Article</title>
    </head>
    <body>
        <h1>Create a new article</h1>
        <form method="post">
            {% csrf_token %}
            {{ form.as_p }}
            <button type="submit">Save</button>
        </form>
    </body>
    </html>
  4. 配置 URL 路由: 打开 myblog/urls.py,添加一个创建文章的 URL 路由:

    from django.urls import path
    from . import views
    
    urlpatterns = [
        path('', views.index, name='index'),
        path('create/', views.create_article, name='create_article'),
    ]
  5. 在文章列表页面添加链接: 打开 myblog/templates/myblog/index.html,添加一个链接到创建文章页面的链接:

    <!DOCTYPE html>
    <html>
    <head>
        <title>My Blog</title>
    </head>
    <body>
        <h1>Welcome to my blog!</h1>
        <a href="{% url 'create_article' %}">Create a new article</a>
        <ul>
            {% for article in articles %}
                <li><a href="#">{{ article.title }}</a></li>
            {% endfor %}
        </ul>
    </body>
    </html>

第八步:进阶之路,更上一层楼

恭喜你,已经掌握了 Django 的基本用法!接下来,你可以继续深入学习以下内容:

  • 用户认证: Django 提供了强大的用户认证系统,可以方便地实现用户注册、登录、权限管理等功能。
  • 静态文件: 管理静态文件,比如 CSS、JavaScript、图片等。
  • AJAX: 使用 AJAX 技术实现页面的局部刷新,提升用户体验。
  • REST API: 构建 RESTful API,方便与其他应用进行数据交互。
  • 测试: 编写单元测试和集成测试,保证代码质量。
  • 部署: 将 Django 项目部署到生产环境,比如 Heroku、AWS、DigitalOcean 等。

总结:Django,Web 开发的“百宝箱”

Django 是一个功能强大、灵活易用的 Web 框架,可以帮助你快速构建各种类型的 Web 应用。 掌握 Django,就像拥有了一个 Web 开发的“百宝箱”,可以让你在 Web 开发的道路上更加得心应手! 💪

表格:常用 Django 命令

命令 功能
django-admin startproject 创建一个新的 Django 项目
python manage.py startapp 创建一个新的 Django 应用
python manage.py runserver 运行开发服务器
python manage.py makemigrations 创建数据库迁移文件
python manage.py migrate 应用数据库迁移
python manage.py createsuperuser 创建管理员账号
python manage.py shell 进入 Django Shell,可以交互式地操作数据

希望这篇文章能帮助你入门 Django,开启你的 Web 开发之旅! 祝你学习愉快! 😊

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注