Django教程:从零开始学习Web开发的实用指南 – wiki基地

Django 教程:从零开始学习 Web 开发的实用指南

对于渴望进入 Web 开发领域的初学者来说,选择一个合适的框架至关重要。Django,一个高级的 Python Web 框架,以其“快速开发”和“DRY(Don’t Repeat Yourself)”原则而闻名,是许多开发者的首选。本教程将带领你从零开始,一步步掌握 Django 的核心概念和实践技巧,助你构建出功能完备的 Web 应用程序。

第一部分:准备工作

在开始 Django 的学习之旅前,我们需要做一些准备工作:

  1. Python 基础:

    • Django 是基于 Python 的,因此你需要具备一定的 Python 基础知识。至少要了解 Python 的基本语法、数据类型(字符串、列表、字典等)、控制流(if/else、for/while 循环)以及函数和模块的使用。
    • 如果你是 Python 新手,建议先花一些时间学习 Python 基础。网上有很多优秀的免费资源,例如 Codecademy、Python 官方文档等。
  2. 安装 Python:

    • 前往 Python 官网(https://www.python.org/downloads/)下载并安装适合你操作系统的 Python 版本。建议安装 Python 3.7 或更高版本。
    • 在安装过程中,请务必勾选“Add Python to PATH”选项,这样你就可以在命令行中直接使用 Python 和 pip 命令了。
  3. 安装 pip:

    • pip 是 Python 的包管理工具,用于安装和管理 Python 库。通常情况下,pip 会随着 Python 一起安装。
    • 你可以在命令行中输入 pip --version 来检查 pip 是否已正确安装。如果未安装,可以参考 pip 官方文档进行安装。
  4. 安装虚拟环境(推荐):

    • 虚拟环境可以为你的每个 Django 项目创建一个独立的 Python 环境,避免不同项目之间的依赖冲突。
    • 安装 virtualenv:pip install virtualenv
    • 创建虚拟环境:virtualenv myenv (myenv 是虚拟环境的名称,你可以自定义)
    • 激活虚拟环境:
      • Windows:myenv\Scripts\activate
      • macOS/Linux:source myenv/bin/activate
    • 在虚拟环境中,你的命令行提示符前会显示虚拟环境的名称,表示已激活。
  5. 安装 Django:

    • 在激活的虚拟环境中,使用 pip 安装 Django:pip install django
    • 验证安装:python -m django --version,如果显示 Django 版本号,则表示安装成功。
  6. 选择一个代码编辑器:

    • 一个好的代码编辑器可以提高你的开发效率。推荐使用 VS Code、PyCharm、Sublime Text 等。
    • 这些编辑器通常都有丰富的插件和功能,可以帮助你更好地编写和调试代码。

第二部分:Django 核心概念

在开始编写代码之前,我们需要了解 Django 的一些核心概念:

  1. 项目(Project)和应用(App):

    • 项目:一个 Django 项目是一个完整的 Web 应用程序,它可以包含多个应用。例如,一个电商网站可以是一个项目,而其中的用户管理、商品管理、订单管理等模块可以作为独立的应用。
    • 应用:一个 Django 应用是一个独立的、可重用的模块,负责处理特定的功能。一个项目通常由多个应用组成。
  2. 模型(Models):

    • 模型是 Django 中用于定义数据结构的类。每个模型对应数据库中的一张表。
    • 模型定义了数据的字段(例如姓名、年龄、邮箱等)以及数据的行为(例如保存、更新、删除等)。
    • Django 的 ORM(对象关系映射)使得你可以通过 Python 代码来操作数据库,而无需编写 SQL 语句。
  3. 视图(Views):

    • 视图是 Django 中用于处理用户请求并返回响应的函数或类。
    • 视图从模型中获取数据,进行处理,然后将数据传递给模板进行渲染。
    • 视图是连接模型和模板的桥梁。
  4. 模板(Templates):

    • 模板是 Django 中用于生成 HTML 页面的文件。
    • 模板使用 Django 模板语言(DTL)来嵌入动态内容,例如从视图传递过来的数据。
    • 模板可以将数据和 HTML 结构分离,使得代码更易于维护。
  5. URL 配置(URLs):

    • URL 配置将 URL 映射到相应的视图函数。
    • 当用户访问一个 URL 时,Django 会根据 URL 配置找到对应的视图函数进行处理。
    • URL 配置使得你可以灵活地组织你的 Web 应用程序的 URL 结构。
  6. 管理后台(Admin):

    • Django 提供了一个强大的管理后台,可以让你方便地管理你的模型数据。
    • 你只需要在 models.py 中定义模型,Django 就会自动为你生成管理后台界面。
    • 管理后台可以大大简化数据的增删改查操作。

第三部分:创建你的第一个 Django 项目

现在,让我们开始创建一个简单的 Django 项目:

  1. 创建项目:

    • 在命令行中,进入你想要创建项目的目录。
    • 运行 django-admin startproject myproject (myproject 是项目名称,你可以自定义)。
    • 这将在当前目录下创建一个名为 myproject 的文件夹,其中包含 Django 项目的基本结构。
  2. 项目结构:
    myproject/
    manage.py
    myproject/
    __init__.py
    settings.py
    urls.py
    asgi.py
    wsgi.py

    • manage.py:一个命令行工具,用于与项目进行交互(例如运行开发服务器、创建数据库迁移等)
    • __init__.py:一个空文件,告诉Python这个目录应该被视为一个Python包。
    • settings.py:项目的配置文件,包含数据库设置、应用列表、模板路径等。
    • urls.py:项目的URL配置文件,将URL映射到视图。
    • asgi.pywsgi.py: 用于部署项目的 ASGI 和 WSGI 配置文件。
  3. 运行开发服务器:

    • 进入项目目录:cd myproject
    • 运行开发服务器:python manage.py runserver
    • 在浏览器中访问 http://127.0.0.1:8000/,你将看到 Django 的欢迎页面,表示项目已成功创建。
  4. 创建一个App

  5. 确保你在 manage.py 所在的目录中。
  6. 运行python manage.py startapp myapp (myapp 是app的名称, 你可以自定义)。
  7. 这会创建一个名为 myapp 的文件夹, 其中包含应用的基本结构。
  8. 目录结构现在看起来是这样:
    myproject/
    manage.py
    myproject/
    __init__.py
    settings.py
    urls.py
    asgi.py
    wsgi.py
    myapp/
    __init__.py
    admin.py
    apps.py
    migrations/
    __init__.py
    models.py
    tests.py
    views.py

  9. settings.py 中注册应用:

    • 打开 myproject/settings.py 文件。
    • 找到 INSTALLED_APPS 列表,将你的应用名称 'myapp' 添加到列表中。如下所示:
      python
      INSTALLED_APPS = [
      'django.contrib.admin',
      'django.contrib.auth',
      'django.contrib.contenttypes',
      'django.contrib.sessions',
      'django.contrib.messages',
      'django.contrib.staticfiles',
      'myapp', # 添加你的应用
      ]

第四部分:构建一个简单的博客应用

现在,让我们以一个简单的博客应用为例,来演示如何使用 Django 构建一个实际的 Web 应用程序。

  1. 定义模型(models.py):

    • 打开 myapp/models.py 文件。
    • 定义一个 Post 模型,表示博客文章:

    “`python
    from django.db import models

    class Post(models.Model):
    title = models.CharField(max_length=200) # 标题,最大长度为200个字符
    content = models.TextField() # 内容,使用文本字段
    pub_date = models.DateTimeField(auto_now_add=True) # 发布日期,自动设置为当前时间

    def __str__(self):
        return self.title  # 在管理后台显示文章标题
    

    ``
    *
    models.CharField表示字符串字段,models.TextField表示文本字段,models.DateTimeField表示日期时间字段。
    *
    auto_now_add=True` 表示在创建对象时自动设置为当前时间。

  2. 创建数据库迁移:

    • 在命令行中,运行以下命令:
      bash
      python manage.py makemigrations
      python manage.py migrate

      • makemigrations 命令会根据你的模型创建数据库迁移文件。
      • migrate 命令会将迁移文件应用到数据库,创建相应的数据表。
  3. 注册模型到管理后台(admin.py):

    • 打开 myapp/admin.py 文件。
    • 注册 Post 模型:

    “`python
    from django.contrib import admin
    from .models import Post

    admin.site.register(Post)
    ``
    * 这将在 Django 管理后台中添加一个
    Post` 模块,你可以通过管理后台添加、编辑和删除博客文章。

  4. 创建视图(views.py):

    • 打开 myapp/views.py 文件。
    • 创建一个视图函数,用于显示所有博客文章:

    “`python
    from django.shortcuts import render
    from .models import Post

    def post_list(request):
    posts = Post.objects.all().order_by(‘-pub_date’) # 获取所有文章,按发布日期倒序排列
    return render(request, ‘myapp/post_list.html’, {‘posts’: posts})
    ``
    *
    Post.objects.all()获取所有Post对象。
    *
    order_by(‘-pub_date’)按发布日期倒序排列。
    *
    render` 函数将数据传递给模板进行渲染。

  5. 创建模板(templates):

    • myapp 目录下创建一个名为 templates 的文件夹。
    • templates 文件夹内创建一个名为 myapp 的文件夹.
    • myapp/templates/myapp 目录下创建一个名为 post_list.html 的文件。
    • 编写模板内容:

    html
    <!DOCTYPE html>
    <html>
    <head>
    <title>My Blog</title>
    </head>
    <body>
    <h1>My Blog</h1>
    {% for post in posts %}
    <h2>{{ post.title }}</h2>
    <p>{{ post.content }}</p>
    <p>Published: {{ post.pub_date }}</p>
    {% endfor %}
    </body>
    </html>

    * {% for ... %}{% endfor %} 是 Django 模板语言中的循环标签,用于遍历 posts 列表。
    * {{ ... }} 是 Django 模板语言中的变量标签,用于显示变量的值。

  6. 配置 URL(urls.py):

    • myapp 目录下创建一个名为 urls.py 的文件.
    • 编写 URL 配置:

    “`python
    from django.urls import path
    from . import views

    urlpatterns = [
    path(”, views.post_list, name=’post_list’),
    ]
    ``
    * 将根 URL 映射到
    post_list` 视图函数。

    • 打开项目的主URL配置文件 myproject/urls.py
      “`python
      from django.contrib import admin
      from django.urls import include, path

      urlpatterns = [
      path(‘admin/’, admin.site.urls),
      path(”, include(‘myapp.urls’)), #包含myapp的urls
      ]
      “`

  7. 启动服务器并查看效果

  8. 确保你在 manage.py 所在的目录中。
  9. 运行 python manage.py runserver
  10. 访问 http://127.0.0.1:8000/

第五部分:进阶学习

掌握了以上基础知识后,你可以继续深入学习 Django 的更多高级特性:

  1. 表单(Forms):

    • Django 提供了强大的表单处理功能,可以简化表单的创建、验证和处理。
    • 你可以使用 Django 的 Form 类来定义表单,并自动生成 HTML 表单元素。
  2. 用户认证(Authentication):

    • Django 内置了用户认证系统,可以让你轻松实现用户注册、登录、注销等功能。
    • 你可以使用 Django 的 User 模型和相关视图函数来管理用户。
  3. 静态文件(Static Files):

    • 静态文件包括 CSS、JavaScript、图片等。
    • Django 提供了管理静态文件的机制,可以让你方便地部署和管理这些文件。
  4. 模板继承(Template Inheritance):

    • 模板继承可以让你创建可重用的模板结构,减少代码冗余。
    • 你可以定义一个基础模板,然后在子模板中扩展或覆盖基础模板的部分内容。
  5. 自定义模板标签和过滤器(Custom Template Tags and Filters):

    • 你可以创建自定义的模板标签和过滤器,来扩展 Django 模板语言的功能。
    • 这可以让你在模板中实现更复杂的逻辑和数据处理。
  6. 测试(Testing):

    • Django 提供了测试框架,可以让你编写单元测试和集成测试,来保证你的代码质量。
    • 编写测试可以帮助你及早发现代码中的错误,并确保你的应用程序在各种情况下都能正常工作。
  7. 部署(Deployment):

    • Django 应用程序可以部署到各种服务器环境,例如 Apache、Nginx、Gunicorn 等。
    • 你需要了解如何配置服务器和 WSGI 服务器来部署你的 Django 应用程序。

学习资源:

总结:

Django 是一个功能强大且易于学习的 Web 框架,非常适合初学者入门 Web 开发。本教程只是一个入门指南,希望能够帮助你迈出 Django 学习的第一步。通过不断学习和实践,你将能够掌握 Django 的精髓,构建出令人惊叹的 Web 应用程序。 记住,实践是最好的老师,多动手写代码,遇到问题时积极查阅文档和寻求帮助,你的 Django 技能一定会不断提升!

发表评论

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

滚动至顶部