【成人版python基础入门】第七章 Django 巨人肩膀上的开发

在这里插入图片描述

Django 巨人肩膀上的开发

在 Web 开发的广阔领域中,Django 以其强大的功能和全面的特性,称为 Web 开发的巨人。Django 是一个高级的 Python Web 框架,它鼓励快速开发和干净、实用的设计。通过本文,你将快速了解 Django 的特点和优势,学习如何安装 Django,创建并运行 Django 项目,最后通过一个实际的代码示例,展示如何搭建一个简单的博客系统。让我们一起站在巨人的肩膀上,体验 Django 的魅力吧!

Django 的特点

功能全面

Django 提供了几乎所有 Web 开发所需的功能,包括路由、视图、模板、数据库管理等。你几乎不需要依赖外部库,就能完成一个功能完整的 Web 应用。

快速开发

Django 强调“不要重复造轮子”(Don’t Repeat Yourself, DRY),提供了许多预先配置好的工具和模块,让你可以快速地开发应用。

安全性

Django 在安全性方面做得非常好,它自带了许多安全措施,如 SQL 注入防护、跨站脚本攻击(XSS)防护等。

社区支持

Django 拥有一个庞大且活跃的社区,你可以在官方文档、用户论坛、GitHub 等地方找到大量资源和帮助。

风趣的例子

想象一下,你是一名建筑设计师,需要在短时间内设计并建造一座大楼。Django 就像是你手中的超级工具包,里面不仅有各种预制的模块和组件,还有一本详细的说明书。你可以快速地选择需要的模块,组装成一个功能完善的建筑,而不需要从头开始制作每一个零件。

安装 Django

准备工作

在安装 Django 之前,确保你已经安装了 Python。你可以从 Python 官方网站 下载并安装最新版本的 Python。

使用 pip 安装 Django

  1. 打开命令行:在 Windows 上,你可以使用 cmdPowerShell;在 macOS 和 Linux 上,你可以使用 Terminal

  2. 安装 Django

    pip install Django
    

    通常情况下,这个命令会安装 Django 及其依赖。如果你遇到任何问题,可以尝试更新 pip

    pip install --upgrade pip
    

交互式安装教程

假设你是一名勇敢的探险家,准备进入一个神秘的城堡(你的电脑)。你需要一把神奇的钥匙(pip)来开启 Django 的大门(安装 Django)。

步骤1:打开魔法地图(命令行)

  • Windows:点击 Win + R,输入 cmdPowerShell,按回车键。
  • macOS 和 Linux:打开 Terminal

步骤2:找到魔法商店(安装 Django)

在魔法地图上输入以下命令,就能找到魔法商店并购买 Django 这把神奇的钥匙:

pip install Django

步骤3:检验魔法钥匙(验证安装)

为了确保你已经成功地拿到了 Django 这把钥匙,可以输入以下命令来检查 Django 是否安装成功:

pip list

在输出的列表中,你应该能看到 Django 和其版本号。

创建并运行 Django 项目

基本步骤

  1. 创建项目:使用 django-admin 工具创建一个新的 Django 项目。
  2. 创建应用:在一个项目中,你可以创建多个应用,每个应用负责一个特定的功能。
  3. 配置应用:编辑项目的设置文件,将新创建的应用添加到项目中。
  4. 定义模型:使用 Django 的 ORM(对象关系映射)工具定义数据库模型。
  5. 创建视图:编写视图函数,处理用户的请求。
  6. 定义路由:使用 urls.py 文件定义 URL 路由,将 URL 映射到视图函数。
  7. 创建模板:编写 HTML 模板,用于渲染页面。
  8. 运行服务器:启动 Django 开发服务器,测试你的应用。

示例教程

我们将通过一个简单的博客系统示例,详细介绍如何创建和运行一个 Django 项目。

创建项目

  1. 打开命令行,导航到你希望创建项目的目录。

  2. 创建 Django 项目

    django-admin startproject myblog
    

    这行命令会创建一个名为 myblog 的项目目录,并生成一些基础文件。

创建应用

项目创建完成后,进入项目目录:

cd myblog

在项目目录中,创建一个名为 blog 的应用:

python manage.py startapp blog

这行命令会创建一个名为 blog 的应用目录,并生成一些基础文件。

配置应用

编辑项目目录中的 settings.py 文件,将 blog 应用添加到 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',  # 添加这个行
]

定义模型

blog 应用目录中的 models.py 文件中,定义一个博客文章的模型:

# blog/models.py
from django.db import models

class Post(models.Model):
    title = models.CharField(max_length=200)
    content = models.TextField()
    pub_date = models.DateTimeField('date published')

    def __str__(self):
        return self.title

创建数据库表

在命令行中,运行以下命令来生成数据库迁移文件,并应用这些迁移文件:

python manage.py makemigrations
python manage.py migrate

创建视图

blog 应用目录中的 views.py 文件中,编写视图函数:

# blog/views.py
from django.shortcuts import render
from django.http import HttpResponse
from .models import Post

def index(request):
    posts = Post.objects.all()
    return render(request, 'blog/index.html', {'posts': posts})

def post_detail(request, post_id):
    post = Post.objects.get(id=post_id)
    return render(request, 'blog/detail.html', {'post': post})

定义路由

blog 应用目录中,创建一个 urls.py 文件,并定义 URL 路由:

# blog/urls.py
from django.urls import path
from . import views

urlpatterns = [
    path('', views.index, name='index'),
    path('<int:post_id>/', views.post_detail, name='post_detail'),
]

将这个应用的 URL 路由添加到项目的 urls.py 文件中:

# myblog/urls.py
from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('blog/', include('blog.urls')),
]

创建模板

blog 应用目录中,创建一个 templates 目录,并在其中创建 blog 子目录。然后在 blog 目录中创建 index.htmldetail.html 模板文件。

index.html 模板
<!-- blog/templates/blog/index.html -->
<!DOCTYPE html>
<html>
<head>
    <title>我的博客</title>
</head>
<body>
    <h1>欢迎来到我的博客</h1>
    <ul>
        {% for post in posts %}
            <li><a href="{% url 'post_detail' post.id %}">{{ post.title }}</a></li>
        {% endfor %}
    </ul>
</body>
</html>
detail.html 模板
<!-- blog/templates/blog/detail.html -->
<!DOCTYPE html>
<html>
<head>
    <title>{{ post.title }}</title>
</head>
<body>
    <h1>{{ post.title }}</h1>
    <p>{{ post.content }}</p>
    <p>发表日期:{{ post.pub_date }}</p>
    <a href="{% url 'index' %}">返回首页</a>
</body>
</html>

运行服务器

  1. 启动 Django 开发服务器

    python manage.py runserver
    
  2. 访问应用

    打开浏览器,访问 http://127.0.0.1:8000/blog/,你应该能看到博客首页,列出所有的博客文章。点击文章标题,可以进入文章详情页面。

代码样例:搭建一个简单的博客系统

项目结构

一个典型的 Django 项目结构如下:

myblog/
    manage.py
    myblog/
        __init__.py
        settings.py
        urls.py
        asgi.py
        wsgi.py
    blog/
        __init__.py
        admin.py
        apps.py
        models.py
        tests.py
        views.py
        urls.py
        templates/
            blog/
                index.html
                detail.html
模型定义
# blog/models.py
from django.db import models

class Post(models.Model):
    title = models.CharField(max_length=200)
    content = models.TextField()
    pub_date = models.DateTimeField('date published')

    def __str__(self):
        return self.title
视图定义
# blog/views.py
from django.shortcuts import render, get_object_or_404
from django.http import HttpResponse
from .models import Post

def index(request):
    posts = Post.objects.all()
    return render(request, 'blog/index.html', {'posts': posts})

def post_detail(request, post_id):
    post = get_object_or_404(Post, id=post_id)
    return render(request, 'blog/detail.html', {'post': post})
路由定义
# blog/urls.py
from django.urls import path
from . import views

urlpatterns = [
    path('', views.index, name='index'),
    path('<int:post_id>/', views.post_detail, name='post_detail'),
]

在项目的 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('blog/', include('blog.urls')),
]
模板文件

blog/templates/blog/ 目录中创建 index.htmldetail.html 模板文件。

index.html 模板
<!DOCTYPE html>
<html>
<head>
    <title>我的博客</title>
</head>
<body>
    <h1>欢迎来到我的博客</h1>
    <ul>
        {% for post in posts %}
            <li><a href="{% url 'post_detail' post.id %}">{{ post.title }}</a></li>
        {% endfor %}
    </ul>
</body>
</html>
detail.html 模板
<!DOCTYPE html>
<html>
<head>
    <title>{{ post.title }}</title>
</head>
<body>
    <h1>{{ post.title }}</h1>
    <p>{{ post.content }}</p>
    <p>发表日期:{{ post.pub_date }}</p>
    <a href="{% url 'index' %}">返回首页</a>
</body>
</html>

运行服务器

  1. 生成数据库迁移文件

    python manage.py makemigrations
    
  2. 应用数据库迁移

    python manage.py migrate
    
  3. 创建超级用户(可选):

    python manage.py createsuperuser
    

    按照提示输入用户名、邮箱和密码,创建一个超级用户,用于访问 Django 管理界面。

  4. 启动开发服务器

    python manage.py runserver
    
  5. 访问应用

    打开浏览器,访问 http://127.0.0.1:8000/blog/,你应该能看到博客首页,列出所有的博客文章。点击文章标题,可以进入文章详情页面。

摘要

Django 是一个功能全面的 Web 框架,专注于快速开发和良好的设计。通过本文,你了解了 Django 的特点和优势,学会了如何安装 Django,创建并运行一个 Django 项目,并通过一个实际的代码示例,展示了如何搭建一个简单的博客系统。Django 的 MVC 模型和 ORM 工具使得数据管理和视图处理变得非常简单,让你可以专注于核心功能的开发。

希望本文能够帮助你快速入门 Django,体验构建更大规模应用的乐趣。站在巨人的肩膀上,你不仅能快速地实现复杂的功能,还能更好地理解 Web 开发的最佳实践。继续探索 Django 的更多功能,你会发现,它不仅可以帮助你制作简单的网站,还能支持复杂的 Web 应用开发。祝你在 Web 开发的道路上越走越远,成为一名优秀的 Python Web 开发者!

posted @   爱上编程技术  阅读(2)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示