当前位置: 首页 > article >正文

前端Python应用指南(四)Django实战:创建一个简单的博客系统

《写给前端的python应用指南》系列:

  • (一)快速构建 Web 服务器 - Flask vs Node.js 对比
  • (二)深入Flask:理解Flask的应用结构与模块化设计
  • (三)Django vs Flask:哪种框架适合构建你的下一个Web应用?

在前几篇博文中,我们讨论了Flask和Django这两大Python Web框架,并通过对比分析了它们的优缺点和适用场景。在本篇博文中,我将通过实际操作,使用Django框架创建一个简单的博客系统。这个系统将包含基本的功能,如文章展示、文章发布、编辑和删除。通过这篇博文,你将更深入地理解Django框架的核心功能,并能够上手开发自己的Web应用。

一、项目简介

目标是创建一个简单的博客系统,具备以下功能:

  • 文章展示:展示所有博客文章。
  • 文章创建:允许用户创建新的文章。
  • 文章编辑:用户可以编辑已有的文章。
  • 文章删除:用户可以删除文章。

在此过程中,将使用Django的MVC(Model-View-Controller)架构来组织代码,利用Django的内置功能快速搭建系统。

二、创建项目和应用

2.1 安装Django

首先,你需要确保已安装了Django。如果尚未安装,可以通过以下命令安装:

pip install django
2.2 创建Django项目

在终端中执行以下命令,创建一个新的Django项目:

django-admin startproject blog_project
cd blog_project

这将会创建一个名为blog_project的文件夹,并在其中生成Django项目的基本结构。

2.3 创建Django应用

在Django中,应用(App)是一个可以独立工作的模块,可以包含模型、视图、URL配置等。接下来我们创建一个名为blog的应用来处理博客的相关逻辑:

python manage.py startapp blog

执行后,Django将在项目目录下生成一个blog目录,其中包含了应用的基本文件结构。

2.4 注册应用

在项目的settings.py文件中,找到INSTALLED_APPS列表,并将blog应用添加到该列表中:

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

三、定义数据模型

在Django中,模型(Model)是数据库的映射,它定义了数据库表的结构以及与数据交互的方式。接下来,我们将定义一个简单的Post模型,用来表示博客文章。

3.1 编辑模型

blog/models.py文件中,添加以下代码来定义Post模型:

from django.db import models

class Post(models.Model):
    title = models.CharField(max_length=200)  # 文章标题
    content = models.TextField()  # 文章内容
    created_at = models.DateTimeField(auto_now_add=True)  # 文章创建时间
    updated_at = models.DateTimeField(auto_now=True)  # 文章更新时间

    def __str__(self):
        return self.title
  • title: 存储文章标题,使用CharField,并设置最大长度。
  • content: 存储文章内容,使用TextField,适合存储较长的文本。
  • created_at: 存储文章的创建时间,使用DateTimeField并设置auto_now_add=True,这样在创建文章时会自动记录时间。
  • updated_at: 存储文章的更新时间,使用DateTimeField并设置auto_now=True,每次更新文章时会自动更新该字段。
3.2 迁移数据库

模型定义完成后,Django需要将这些模型映射到数据库表中。首先,运行以下命令来生成迁移文件:

python manage.py makemigrations

然后,执行迁移操作将模型应用到数据库中:

python manage.py migrate

四、创建视图和URL路由

Django的视图(View)用于处理用户请求并返回响应。接下来,将创建视图函数来处理展示、创建、编辑和删除博客文章的功能。

4.1 创建视图

blog/views.py中,添加如下视图函数:

from django.shortcuts import render, redirect, get_object_or_404
from .models import Post
from .forms import PostForm

# 文章列表视图
def post_list(request):
    posts = Post.objects.all()  # 获取所有文章
    return render(request, 'blog/post_list.html', {'posts': posts})

# 文章详细视图
def post_detail(request, pk):
    post = get_object_or_404(Post, pk=pk)  # 获取指定id的文章
    return render(request, 'blog/post_detail.html', {'post': post})

# 创建文章视图
def post_create(request):
    if request.method == 'POST':
        form = PostForm(request.POST)
        if form.is_valid():
            form.save()
            return redirect('post_list')  # 创建成功后跳转到文章列表
    else:
        form = PostForm()
    return render(request, 'blog/post_form.html', {'form': form})

# 编辑文章视图
def post_edit(request, pk):
    post = get_object_or_404(Post, pk=pk)
    if request.method == 'POST':
        form = PostForm(request.POST, instance=post)
        if form.is_valid():
            form.save()
            return redirect('post_detail', pk=post.pk)  # 编辑成功后跳转到文章详情
    else:
        form = PostForm(instance=post)
    return render(request, 'blog/post_form.html', {'form': form})

# 删除文章视图
def post_delete(request, pk):
    post = get_object_or_404(Post, pk=pk)
    post.delete()
    return redirect('post_list')  # 删除成功后跳转到文章列表
4.2 配置URL路由

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'),  # 文章详情页面
    path('post/new/', views.post_create, name='post_create'),  # 创建文章页面
    path('post/<int:pk>/edit/', views.post_edit, name='post_edit'),  # 编辑文章页面
    path('post/<int:pk>/delete/', views.post_delete, name='post_delete'),  # 删除文章
]
4.3 在项目的URL配置中包含blog应用的URL

blog_project/urls.py文件中,导入并包含blog应用的URL配置:

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('blog.urls')),  # 包含blog应用的URL配置
]

五、创建表单

在Django中,我们使用表单(Form)来处理用户输入的数据。接下来,我们创建一个表单来实现文章的创建和编辑。

5.1 创建表单

blog/forms.py文件中,创建一个PostForm类:

from django import forms
from .models import Post

class PostForm(forms.ModelForm):
    class Meta:
        model = Post
        fields = ['title', 'content']  # 只显示标题和内容字段

这个表单类基于Post模型,Django会自动为我们生成表单字段,并进行数据验证。

六、创建模板

Django使用模板引擎来渲染HTML页面。我们需要为博客系统创建几个模板来展示文章列表、文章详情、文章表单等。

6.1 文章列表页面(post_list.html

blog/templates/blog/目录下创建post_list.html文件,内容如下:

<!DOCTYPE html>
<html>
<head>
    <title>博客列表</title>
</head>
<body>
    <h1>博文列表</h1>
    <a href="{% url 'post_create' %}">创建博文</a>
    <ul>
        {% for post in posts %}
            <li>
                <a href="{% url 'post_detail' post.pk %}">{{ post.title }}</a>
                <a href="{% url 'post_edit' post.pk %}">Edit</a>
                <a href="{% url 'post_delete' post.pk %}">Delete</a>
            </li>
        {% endfor %}
    </ul>
</body>
</html>
6.2 文章详情页面(post_detail.html

blog/templates/blog/目录下创建post_detail.html文件,内容如下:

<!DOCTYPE html>
<html>
<head>
    <title>{{ post.title }}</title>
</head>
<body>
    <h1>{{ post.title }}</h1>
   

 <p>{{ post.content }}</p>
    <a href="{% url 'post_edit' post.pk %}">编辑</a>
    <a href="{% url 'post_delete' post.pk %}">删除</a>
    <a href="{% url 'post_list' %}">返回列表</a>
</body>
</html>
6.3 文章表单页面(post_form.html

blog/templates/blog/目录下创建post_form.html文件,内容如下:

<!DOCTYPE html>
<html>
<head>
    <title>编辑博文</title>
</head>
<body>
    <h1>编辑博文</h1>
    <form method="post">
        {% csrf_token %}
        {{ form.as_p }}
        <button type="submit">保存</button>
    </form>
</body>
</html>

七、运行项目

至此,博客系统的基本功能已经完成。现在,我们可以启动Django开发服务器,查看应用效果。

python manage.py runserver

在浏览器中访问 http://127.0.0.1:8000/,你应该能够看到博客文章的列表,并且可以创建、编辑、删除文章。

八、总结

通过本篇博文,使用Django创建了一个简单的博客系统,学习了如何:

  • 创建Django项目和应用
  • 定义数据模型并进行数据库迁移
  • 创建视图和URL路由
  • 使用Django表单处理用户输入
  • 编写模板渲染数据

通过这些基本的操作,你可以在Django框架的基础上扩展更多的功能,如用户认证、评论系统、标签分类等。希望这篇教程能帮助你快速上手Django框架,创建自己的Web应用!


http://www.kler.cn/a/459532.html

相关文章:

  • 【Rust自学】9.3. Result枚举与可恢复的错误 Pt.2:传播错误、?运算符与链式调用
  • PostgreSQL的备份方式
  • pip下载包出现SSLError
  • 《从入门到精通:蓝桥杯编程大赛知识点全攻略》(一)-递归实现指数型枚举、递归实现排列型枚举
  • 【异常解决】生产环境 net :: ERR_INCOMPLETE_CHUNKED_ENCODING的问题修复
  • 实践:事件循环
  • Java的SpringMVC
  • 嵌入式硬件杂谈(八)电源的“纹波”到底是什么?
  • Linux 信号集与信号掩码
  • uniapp小程序使用rich-text富文本图片溢出问题
  • ZYNQ7000双核AMP文档解读
  • 爬虫的工作原理
  • 百度热力图数据处理流程Arcgis PRO篇,Arcgis,QGIS见链接其他文章
  • 互联网全景消息(8)之RabbitMQ进阶介绍
  • 【机器学习】概述
  • 【C++11】类型分类、引用折叠、完美转发
  • 【数据库初阶】Linux中表的基础操作
  • 【Redis】集群配置(主从复制 哨兵搭建)
  • JPA查询部分字段的最佳实践
  • Python 中的 with open:文件操作的最佳实践
  • 发布远程组件vue2+Webpack和vue3+vite
  • 面试场景题系列:设计云盘系统
  • jmeter设置tps、响应时间监测时间间隔
  • DigitalOcean Kubernetes现已支持VPC natvie集群
  • 【深度学习】Pytorch框架介绍
  • 基于单片机的温湿度采集系统(论文+源码)