首页/新闻资讯/正文详情

Django入门教程(二十七):博客项目实战(八)——表单处理与收藏功能

发布时间:2026/9/24 17:45:23 来源:云帆数科 栏目:资讯中心
Django入门教程(二十七):博客项目实战(八)——表单处理与收藏功能
一、收藏功能的数据模型设计收藏功能的核心是:一个用户可以收藏多篇文章,一篇文章可以被多个用户收藏。这是典型的多对多(ManyToMany)关系。我们不需要新建模型——Django 的User模型是内置的,只需要在Post模型中添加一个ManyToManyField指向User。python# 文件路径:blog/models.py 的 Post 类中添加 from django.contrib.auth.models import User class Post(models.Model): # ... 已有字段 ... # 收藏者:ManyToManyField 自动创建中间表 favorites = models.ManyToManyField( User, related_name='favorite_posts', # 反向查询:user.favorite_posts.all() verbose_name='收藏者', blank=True )参数说明:参数作用User关联的目标模型related_name='favorite_posts'反向查询名称,user.favorite_posts.all()verbose_name='收藏者'Admin 后台显示的中文名blank=True表单中允许为空中间表说明:ManyToManyField会自动创建一张中间表(如blog_post_favorites),包含post_id和user_id两个外键字段,无需手动定义。修改模型后,生成并执行迁移:bash(venv) $ python manage.py makemigrations (venv) $ python manage.py migrate二、收藏与取消收藏的视图逻辑python# 文件路径:blog/views.py 新增 from django.shortcuts import render, redirect, get_object_or_404 from django.contrib.auth.decorators import login_required from django.contrib import messages from .models import Post # login_required 装饰器:未登录用户访问此视图时,自动跳转到登录页 @login_required def toggle_favorite(request, pk): """切换收藏状态:收藏 → 取消,未收藏 → 收藏""" post = get_object_or_404(Post, pk=pk) # 检查当前用户是否已收藏 if post.favorites.filter(id=request.user.id).exists(): # 已收藏 → 取消收藏 post.favorites.remove(request.user) messages.info(request, f'已取消收藏「{post.title}」') else: # 未收藏 → 添加收藏 post.favorites.add(request.user) messages.success(request, f'已收藏「{post.title}」') # 重定向回当前页面(HTTP_REFERER 是来源页面的 URL) referer = request.META.get('HTTP_REFERER', '/') return redirect(referer)关键点解析:代码说明@login_required未登录用户自动跳转到登录页

相关推荐

Django入门教程(二十五):博客项目实战(六)——分类筛选与关键词搜索
Django入门教程(二十五):博客项目实战(六)——分类筛选与关键词搜索

一、URL 查询参数 查询参数是 URL 中问号后面的部分,如 /?category=django&q=入门。 在 Django 视图函数中,通过 request.GET 获取这些参数。 python def index(request):# request.GET 是一个类似字典的对象# .get(key, 默认值) 安全获取参数,不存在时返回默认值cat… · 2026/9/24 17:45:23

MySQL数据库命令
MySQL数据库命令

目录 m结束符 库 1、创建数据库 2、查看数据库 3、选择,进入数据库 4、修改数据库 5、删除数据库 表 一、数据类型 1、数值类型 2、日期时间型 3、字符串类型 二、表的创建 1、表结构的设计 2、创建表 3、查看表 4、表修改 1、修改表名 2、修改字… · 2026/9/24 17:45:17

ROCKY LINUX10安装DOCKER
ROCKY LINUX10安装DOCKER

1.实验环境ROCKY LINUX102.安装脚本#!/bin/bash if command -v docker &> /dev/null; thenecho "Docker 已安装,版本:$(docker --version)" elseecho "Docker 未安装,现在开始安装"#1.安装包 dnf install -y epel-release#2.… · 2026/9/24 17:45:17

Java+JSP+MySQL学生信息管理系统:课程设计最稳落地方案
Java+JSP+MySQL学生信息管理系统:课程设计最稳落地方案

简介:这份资源是面向高校计算机相关专业学生的Java Web课程设计参考项目,采用JSPServletMySQL技术栈实现学生信息管理系统,适合正在准备期末大作业、课程设计或需要练手Java Web完整开发流程的初学者与中级学习者。压缩包共241个文件&#xf… · 2026/9/24 18:14:57

基于注意力机制的3D点云语义分割源码解析与实战调优
基于注意力机制的3D点云语义分割源码解析与实战调优

简介:本资源面向三维视觉与自动驾驶感知方向的研究者和开发者,聚焦如何借助注意力机制提升3D点云语义分割性能,适合具备一定深度学习基础、希望深入理解点云特征学习并落地实战的中高级学习者。压缩包共195个文件,约1.95MB&#x… · 2026/9/24 18:14:57

C# Socket通讯源码实践:粘包拆包、心跳机制与断线重连全解析
C# Socket通讯源码实践:粘包拆包、心跳机制与断线重连全解析

简介:这是一份基于C#的Socket网络通讯完整源码,面向初步接触网络编程的C#开发者,适合用来快速理解客户端与服务器之间的通信原理。代码采用WinForm界面,分为server和client两个独立项目,结构简洁,支持文本消… · 2026/9/24 18:14:57

航空图像野火探测数据集与YOLOv8实战:从数据选型到边缘部署
航空图像野火探测数据集与YOLOv8实战:从数据选型到边缘部署

简介:这是一份面向野火探测与火灾识别任务的综合性航空图像数据集,适合从事深度学习目标检测的研究者、算法工程师及遥感方向学生使用,可支撑火灾预警、灾情评估等场景下的模型训练与验证。压缩包共收录2000个文件,全部为XML格式的… · 2026/9/24 18:14:57

Java电商后台系统设计:从能跑到敢上线的实战指南
Java电商后台系统设计:从能跑到敢上线的实战指南

简介:这是一套基于Java语言开发的电商后台管理系统模拟源码,面向Java后端初学者与中级开发者,聚焦电商核心业务场景学习与系统架构理解。资源完整呈现了类京东/淘宝后台的关键模块实现,涵盖商品管理、订单处理、用户权限控制、MyB… · 2026/9/24 18:14:50

BP神经网络数据回归预测:Matlab完整实现、参数调优与常见问题排查
BP神经网络数据回归预测:Matlab完整实现、参数调优与常见问题排查

简介:在工业回归预测与学术实验中,常需借助历史数据推断未知结果,BP神经网络作为经典的非线性映射模型,依靠反向传播算法更新权重,非常契合此类问题;基于此的Matlab实现方案面向机器学习初学者和需要落地预… · 2026/9/24 18:14:50

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程
基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为… · 2026/9/24 0:00:13

1D-CNN时间序列建模实战:从Conv1d原理到工业落地
1D-CNN时间序列建模实战:从Conv1d原理到工业落地

简介:面向时间序列数据建模的一维卷积神经网络完整实现,适合深度学习入门者及需要快速验证时序模型的研究者,能够从音频、文本、传感器或股价等序列中挖掘局部特征与时间依赖。压缩包体积很小,只有3KB,内含3个Python脚… · 2026/9/24 0:00:26

柔软的L:汉语语流中被忽视的舌肌张力控制
柔软的L:汉语语流中被忽视的舌肌张力控制

1. 这个“L”不是字母表里的L,而是舌尖上的L最近在几个方言群和语音教学社群里,反复看到有人发一句:“也说字母L:柔软的长舌”。初看以为是英语发音课笔记,点开才发现全是方言爱好者、播音系学生、语言康复师甚至戏曲演… · 2026/9/24 0:00:44

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码