杰瑞科技汇

Python2.7 Django教程怎么学?

⚠️ 重要声明:Python 2.7 和 Django 1.x 已经在 2025 年初停止官方支持,这意味着它们不再接收安全更新、错误修复,并且可能存在已知的漏洞,强烈建议您在学习新项目时使用 Python 3 和最新的 Django。

Python2.7 Django教程怎么学?-图1
(图片来源网络,侵删)

本教程旨在帮助您维护旧项目、理解历史代码或纯粹出于学习目的。


教程目标

我们将从头开始,创建一个简单的博客应用,包含以下功能:

  1. 创建一个 Django 项目。
  2. 创建一个名为 "blog" 的应用。
  3. 定义一个文章模型。
  4. 创建管理界面来管理文章。
  5. 创建视图和模板来在网站上展示文章列表和详情。

第一步:环境准备

  1. 安装 Python 2.7 如果您尚未安装,请从 Python 官网 下载并安装 Python 2.7.18(这是最后一个 2.7 版本),安装时请确保勾选 "Add Python to PATH" 选项。

  2. 安装 pip pip 是 Python 的包管理器,在较新的 Python 版本中它自带,但 2.7 可能需要单独安装,安装 Python 2.7 后,您可以在命令行中运行:

    Python2.7 Django教程怎么学?-图2
    (图片来源网络,侵删)
    # 如果没有 pip,先下载 get-pip.py
    curl https://bootstrap.pypa.io/pip/2.7/get-pip.py -o get-pip.py
    python get-pip.py
  3. 安装 Django 我们将安装最后一个支持 Python 2.7 的稳定版本 Django 1.11

    pip install Django==1.11

第二步:创建项目和应用

  1. 创建项目 在您想存放项目的目录下,打开命令行,运行以下命令。myblog 是您的项目名称。

    django-admin.py startproject myblog

    这会创建一个名为 myblog 的文件夹,结构如下:

    myblog/
    ├── manage.py
    └── myblog/
        ├── __init__.py
        ├── settings.py
        ├── urls.py
        ├── wsgi.py
        └── migrate.py  # (在旧版本中可能叫 this)
  2. 创建应用 进入 myblog 文件夹,然后创建一个名为 blog 的应用。

    cd myblog
    python manage.py startapp blog

    现在您的项目结构变为:

    myblog/
    ├── manage.py
    ├── myblog/          # 项目配置目录
    └── blog/            # 我们的应用目录
        ├── __init__.py
        ├── admin.py
        ├── models.py
        ├── tests.py
        └── views.py

第三步:定义模型

模型是您数据的唯一、权威来源,它相当于数据库表的布局。

打开 blog/models.py 文件,并添加以下代码:

# blog/models.py
from django.db import models
from django.utils import timezone
from django.contrib.auth.models import User
class Post(models.Model):
    # 作者,外键关联到 User 模型
    author = models.ForeignKey(User, on_delete=models.CASCADE)
    # 文章标题,CharField 用于短字符串= models.CharField(max_length=200)
    # 文章内容,TextField 用于长文本
    text = models.TextField()
    # 创建时间,默认为当前时间
    created_date = models.DateTimeField(default=timezone.now)
    # 发布时间,可以为空
    published_date = models.DateTimeField(blank=True, null=True)
    def publish(self):
        self.published_date = timezone.now()
        self.save()
    def __str__(self):
        return self.title

代码解释:

  • from django.db import models: 导入 Django 的模型功能。
  • class Post(models.Model):: 定义一个 Post 模型,它继承自 models.Model
  • author, title, text, created_date, published_date: 都是模型的字段,定义了数据类型和约束。
  • __str__(self): 这是一个 Python 的“魔术方法”,定义了当对象被转换为字符串时应该返回什么,这在 Django 的管理后台非常有用。

第四步:激活应用并创建数据库

  1. 激活应用 Django 需要知道您的新应用,打开 myblog/myblog/settings.py 文件,找到 INSTALLED_APPS 列表,并将 'blog' 添加进去。

    # myblog/myblog/settings.py
    INSTALLED_APPS = (
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'blog',  # 添加我们的 blog 应用
    )
  2. 创建数据库迁移文件 迁移文件是 Django 对模型变更的记录,运行以下命令来生成迁移文件:

    python manage.py makemigrations blog

    您会看到类似 Migrations for 'blog' 的输出,这表示 Django 已经根据 models.py 创建了新的迁移文件。

  3. 应用迁移 将迁移应用到数据库,创建实际的表结构。

    python manage.py migrate

    这一步会执行所有未应用的迁移,为您的 Post 模型在数据库中创建一个 blog_post 表。


第五步:配置管理后台

Django 自带一个强大的管理后台,让我们可以轻松管理网站内容。

  1. 创建超级用户 为了登录管理后台,我们需要一个超级用户账户。

    python manage.py createsuperuser

    按照提示输入用户名、邮箱和密码。

  2. 注册模型 打开 blog/admin.py 文件,并注册 Post 模型,使其在管理后台可见。

    # blog/admin.py
    from django.contrib import admin
    from .models import Post
    admin.site.register(Post)
  3. 启动开发服务器 运行开发服务器来查看我们的网站。

    python manage.py runserver
  4. 测试管理后台 在浏览器中访问 http://127.0.0.1:8000/admin/。 使用您刚刚创建的超级用户名和密码登录。 您应该能看到 "Posts" 在 "Blog" 应用下,点击 "Add" 来添加您的第一篇文章,然后保存。


第六步:创建视图和模板

视图是处理业务逻辑并返回响应的函数,模板是用于渲染 HTML 的文件。

  1. 配置 URL 我们需要一个入口点,打开 myblog/myblog/urls.py,添加 blog 应用的 URL。

    # myblog/myblog/urls.py
    from django.conf.urls import include, url  # 注意:Python 2.7 中是 conf.urls
    from django.contrib import admin
    urlpatterns = [
        url(r'^admin/', admin.site.urls),
        url(r'', include('blog.urls')),  # 将所有非 admin 的请求都交给 blog.urls 处理
    ]
  2. 创建应用的 URL 配置blog 应用目录下创建一个名为 urls.py 的新文件。

    # blog/urls.py
    from django.conf.urls import url
    from . import views
    urlpatterns = [
        # 当访问根路径 / 时,调用 views.post_list 函数
        url(r'^$', views.post_list, name='post_list'),
    ]
  3. 创建视图 打开 blog/views.py,添加 post_list 视图。

    # blog/views.py
    from django.shortcuts import render
    from django.utils import timezone
    from .models import Post
    def post_list(request):
        # 获取所有已发布的文章,按发布日期降序排列
        posts = Post.objects.filter(published_date__lte=timezone.now()).order_by('-published_date')
        # 将 posts 对象传递给模板
        return render(request, 'blog/post_list.html', {'posts': posts})

    代码解释:

    • Post.objects.filter(...): 从数据库中查询 Post 对象。
    • published_date__lte=timezone.now(): 筛选出 published_date 小于或等于当前时间的文章(即已发布的文章)。
    • order_by('-published_date'): 按 published_date 降序排列,最新的文章在最前面。
    • render(): 渲染一个模板并返回一个 HttpResponse 对象,我们传递了 posts 查询结果。
  4. 创建模板 Django 需要知道去哪里找模板,在 blog 应用目录下创建一个 templates/blog/ 的文件夹结构。

    blog/
    └── templates/
        └── blog/
            └── post_list.html  # 创建这个文件

    post_list.html 中写入以下 HTML 代码:

    <!-- blog/templates/blog/post_list.html -->
    <html>
    <head>
        <title>My Blog</title>
    </head>
    <body>
        <h1>My Blog</h1>
        {% for post in posts %}
            <div>
                <p>Published: {{ post.published_date }}</p>
                <h2><a href="#">{{ post.title }}</a></h2>
                <p>{{ post.text|linebreaks }}</p>
            </div>
        {% empty %}
            <p>No posts are available yet.</p>
        {% endfor %}
    </body>
    </html>

    代码解释:

    • {% for post in posts %}: 这是一个 Django 模板语言(Django Template Language, DTL)的循环,遍历 posts 变量。
    • {{ post.published_date }}: 用于输出变量的值。
    • |linebreaks: 这是一个过滤器,将文本中的换行符 (\n) 转换成 HTML 的 <p>

第七步:运行并查看结果

确保您的开发服务器正在运行 (python manage.py runserver),然后在浏览器中访问 http://127.0.0.1:8000/

您应该能看到您在管理后台创建的文章列表了!


后续步骤

恭喜!您已经成功创建了一个基础的 Django 博客,接下来您可以尝试:

  • 创建文章详情页(点击标题跳转到详情)。
  • 创建表单来发布新文章。
  • 添加样式(CSS)来美化您的网站。
  • 学习 Django 的表单、类视图、静态文件处理等更高级的主题。

希望这份教程对您有帮助!

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