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

Web实战丨基于Django的简单网页计数器

文章目录

  • 写在前面
  • Django简介
  • 主要程序
  • 运行结果
  • 系列文章
  • 写在后面

写在前面

本期内容

  • 基于django的简单网页计数器

所需环境

  • python
  • pycharm或vscode
  • django

下载地址

  • https://download.csdn.net/download/m0_68111267/88795604

Django简介

Django 是一个用 Python 编写的高级、开源 Web 开发框架,以其高效、安全和可扩展性而闻名。该框架遵循模型-视图-模板(Model-View-Template, MVT)设计模式,简化了复杂数据库驱动网站的开发流程。

在 Django 中,模型(Model)负责处理应用程序的数据结构以及与数据库的交互,通过 ORM 提供了一种直观的方式来定义数据库表结构并进行 CURD 操作。

视图(View)是处理用户请求的核心部分,视图函数或类接收请求数据,执行业务逻辑,并决定返回给用户的响应内容。

模板(Template)系统则用于渲染前端界面,允许开发者使用简洁易懂的语法来嵌入变量和逻辑,分离了展示层代码和业务逻辑。

Django 内置了强大的后台管理界面,使得快速构建内容管理系统变得轻而易举。它还提供认证、授权、会话管理、中间件、URL 路由、静态文件处理等众多功能,大大加速了 Web 应用程序的开发速度。

此外,Django 支持 RESTful API 开发,通过 Django Rest Framework 可以轻松构建强大的 API 服务。其安全性高,社区活跃,拥有丰富的第三方库支持,适用于从个人博客到企业级复杂应用的各类项目开发。总之,Django 是一款强大且全面的 Web 开发框架,旨在使开发者能够关注于编写高质量的应用程序,而不是重复造轮子。

主要程序

  • views.py
from django.views.generic import ListView
from django.views.generic import DetailView
from .models import Articleclass ArticleDetailView(DetailView):model = Articledef get_object(self, queryset=None):obj = super().get_object(queryset=queryset)obj.viewed()return objclass ArticleListView(ListView):queryset = Article.objects.filter(status='p').order_by('-pub_date')paginate_by = 6……(请下载后查看完整代码)

这段代码定义了两个基于 Django Generic Views 的视图类,用于处理文章列表和文章详情页面的显示:

  1. ArticleDetailView 类:

    • 继承自 django.views.generic.DetailView,这是一个用于展示单个模型对象详细信息的视图。

    • model = Article:指定该视图将处理 Article 模型的对象。

    • 重写了 get_object 方法:

      • 使用 super().get_object(queryset=queryset) 调用父类方法获取请求对应的文章对象。
      • 在获取到对象后立即调用 obj.viewed() 方法,这会增加文章的浏览量(views 字段加 1)。
      • 最后返回文章对象。这样每次用户访问文章详情页时,都会触发浏览次数的更新。
  2. ArticleListView 类:

    • 继承自 django.views.generic.ListView,用于显示一个包含多个模型对象的列表视图。
    • queryset = Article.objects.filter(status='p').order_by('-pub_date'):设置默认查询集为所有状态为“已发表”(‘p’)的文章,并按照发布时间降序排列。
    • paginate_by = 6:设置了分页功能,每页显示6篇文章。这意味着如果文章数量超过6篇,将会自动创建分页链接以便用户可以翻页查看其他文章。

通过这两个视图,网站可以方便地渲染文章列表页面(按发布时间排序并分页)以及单篇文章的详情页面(同时记录并更新文章的浏览量)。

  • models.py
from django.db import models
from django.contrib.auth.models import User
from django.urls import reverse
from django.utils.timezone import nowclass Article(models.Model):STATUS_CHOICES = (('d', '草稿'),('p', '发表'),)title = models.CharField('标题', max_length=200, unique=True)slug = models.SlugField('slug', max_length=60)body = models.TextField('正文')pub_date = models.DateTimeField('发布时间', default= now, null=True)create_date = models.DateTimeField('创建时间', auto_now_add=True)mod_date = models.DateTimeField('修改时间', auto_now=True)status = models.CharField('文章状态', max_length=1, choices=STATUS_CHOICES, default='p')views = models.PositiveIntegerField('浏览量', default=0)author = models.ForeignKey(User, verbose_name='作者', on_delete=models.CASCADE)
……(请下载后查看完整代码)

这段代码定义了一个名为 Article 的 Django 模型类,用于表示博客文章。下面对各个部分进行详细分析:

  1. 导入相关模块:

    • django.db.models 导入 models 类,用于定义数据库模型。
    • django.contrib.auth.models 导入 User 类,表示系统中的用户模型,以便在 Article 中引用文章的作者。
    • django.urls 导入 reverse 函数,用于生成 URL 链接。
    • django.utils.timezone 导入 now 函数,获取当前时间。
  2. 定义 Article 类继承自 models.Model,这是 Django 数据库模型的基本类。

  3. STATUS_CHOICES:一个元组列表,用于设置文章状态字段的可选项,包括草稿(draft)和已发表(published)两种状态。

  4. 字段定义:

    • title: 文章标题,CharField 类型,最大长度为 200 个字符,并要求唯一(unique=True)。
    • slug: slug 字段,通常用于创建 SEO 友好的 URL,SlugField 类型,最大长度为 60 个字符。
    • body: 文章正文,TextField 类型,可以存储大量文本内容。
    • pub_date: 发布日期时间,DateTimeField 类型,默认值为当前时间(now),允许为空(null=True)。
    • create_date: 创建日期时间,DateTimeField 类型,自动设置为对象创建时的时间(auto_now_add=True)。
    • mod_date: 修改日期时间,DateTimeField 类型,自动更新为对象最后一次修改的时间(auto_now=True)。
    • status: 文章状态,CharField 类型,长度为 1,其选择范围由 STATUS_CHOICES 定义,默认值为已发表(‘p’)。
    • views: 文章浏览量,PositiveIntegerField 类型,默认值为 0。
    • author: 文章作者,ForeignKey 类型,关联到 User 模型,当该文章被删除时,会级联删除(on_delete=models.CASCADE)。
  5. 定义字符串表示方法 __str__,返回文章的标题,方便在管理后台或其他地方显示。

  6. Meta 类内定义元信息:

    • ordering: 指定默认排序方式,按照发布日期降序排列(‘-pub_date’)。
    • verbose_nameverbose_name_plural:设置单数和复数形式的模型名称,在后台展示时使用。
    • get_latest_by:指定获取最新文章时依据的字段,这里是 ‘create_date’。
  7. 定义 get_absolute_url 方法,返回文章详情页的 URL,通过传递文章ID给路由 ‘blog:article_detail’ 来实现。

  8. 定义 viewed 方法,用于增加文章的浏览量。每当调用此方法时,文章的 views 字段加1,并仅更新 views 字段 (update_fields=['views'])。这个方法可以在视图函数中调用,以确保每次访问文章详情页面时更新浏览次数。

运行结果

运行结果1
运行结果2

系列文章

序号目录直达链接
1入门实战丨基于Tkinter的简易计算器https://want595.blog.csdn.net/article/details/131731173
2入门实战丨基于Tkinter的生日管理系统https://want595.blog.csdn.net/article/details/131731380
3数据库实战丨基于Tkinter+MySQL的学生成绩管理系统https://want595.blog.csdn.net/article/details/130992721
4数据库实战丨基于Tkinter+MySQL的梅西生涯数据管理系统https://want595.blog.csdn.net/article/details/130995564
5Web实战丨基于Django与Bootstrap的在线计算器https://want595.blog.csdn.net/article/details/134424381
6Web实战丨基于django+html+css的在线购物商城https://want595.blog.csdn.net/article/details/135466052
7Web实战丨基于django+html+css+js的电子商务网站https://want595.blog.csdn.net/article/details/135506809
8Web实战丨基于Django与HTML的用户登录验证系统https://want595.blog.csdn.net/article/details/135513413
9Web实战丨基于django+html+css+js的学院门户网站https://want595.blog.csdn.net/article/details/135511066
10Web实战丨基于Django与HTML的新闻发布系统https://want595.blog.csdn.net/article/details/135519824
11Web实战丨基于django+html+css+js的在线博客网站https://want595.blog.csdn.net/article/details/135536765
12……

写在后面

我是一只有趣的兔子,感谢你的喜欢!

相关文章:

Web实战丨基于Django的简单网页计数器

文章目录 写在前面Django简介主要程序运行结果系列文章写在后面 写在前面 本期内容 基于django的简单网页计数器 所需环境 pythonpycharm或vscodedjango 下载地址 https://download.csdn.net/download/m0_68111267/88795604 Django简介 Django 是一个用 Python 编写的高…...

mysql8安装基础操作(一)

一、下载mysql8.0 1.查看系统glibc版本 这里可以看到glibc版本为2.17,所以下载mysql8.0的版本时候尽量和glibc版本对应 [rootnode2 ~]# rpm -qa |grep -w glibc glibc-2.17-222.el7.x86_64 glibc-devel-2.17-222.el7.x86_64 glibc-common-2.17-222.el7.x86_64 gl…...

MIT6.5830 实验0

前置 本次实验使用 Golang 语言实现,在之前的年份中,都是像 cs186 那样使用 Java 实现。原因: Golang 语言作为现代化语言,简单易上手但功能强大。 使参加实验的同学有同一起跑线,而不是像Java那样,有些同…...

【简便方法和积累】pytest 单元测试框架中便捷安装插件和执行问题

又来进步一点点~~~ 背景:之前写了两篇关于pytest单元测试框架的文章,本篇内容对之前的做一个补充 一、pytest插件: pytest 有非常多的插件,很方便,以下为插件举例: pytest,pytest-html&#x…...

Zabbix数据库分离与邮件报警

基础环境:要有zabbix服务端与被监控端实验目标:源数据库与服务端存放在一台服务器上,分离后源数据库单独在一台服务器上,zabbix服务端上不再有数据库。环境拓扑图: 实验步骤: 1.在8.7服务器上安装相同版本…...

mybatisplus-多数据源配置

1. 流程 pom文件yml配置多数据源具体服务添加注解DS(“***”) 1.pom文件 <!--mybatis plus 起步依赖--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.4.0</vers…...

微信小程序(二十八)网络请求数据进行列表渲染

注释很详细&#xff0c;直接上代码 上一篇 新增内容&#xff1a; 1.GET请求的规范 2.数据赋值的方法 源码&#xff1a; index.wxml <!-- 列表渲染基础写法&#xff0c;不明白的看上一篇 --> <view class"students"><view class"item">&…...

ubuntu22.04 安装conda

要在Ubuntu 22.04上安装Anaconda&#xff0c;可以遵循以下步骤&#xff1a; 首先&#xff0c;打开终端并更新系统包仓库&#xff0c;也需要安装curl工具&#xff0c;这可以通过以下命令完成&#xff1a; sudo apt update && sudo apt install curl -y使用curl命令行工具…...

W801学习笔记十:HLK-W801制作学习机/NES游戏机(总结)

本章总结一下整个开发过程中遇到的问题&#xff1a; 1、引脚的抗干扰问题&#xff1a; 屏幕显示的时候&#xff0c;概率出现花屏。无论怎么修改代码都不能解决&#xff0c;一个偶然的机会&#xff0c;发现当手触摸屏幕的WR和CS引脚时&#xff0c;屏幕会正常。查阅资料&#x…...

《HTML 简易速速上手小册》第6章:HTML 语义与结构(2024 最新版)

文章目录 6.1 语义化标签的重要性6.1.1 基础知识6.1.2 案例 1&#xff1a;使用 <article>, <section>, <aside>, <header>, 和 <footer>6.1.3 案例 2&#xff1a;构建带有嵌套语义化标签的新闻网站6.1.4 案例 3&#xff1a;创建一个带有 <mai…...

分析HarmonyOS应用/服务的CPU活动性能

CPU Profiler 性能分析是用来分析CPU性能瓶颈的工具&#xff0c;可以实时查看应用/服务的CPU使用率和线程活动&#xff0c;也可以查看记录的方法跟踪数据、方法采样数据和系统跟踪数据的详情。基于CPU性能分析&#xff0c;您可以了解在一段时间内执行了哪些方法&#xff0c;以及…...

Linux:理解信号量以及内核中的三种通信方式

文章目录 共享内存的通信速度消息队列msggetmsgsndmsgrcvmsgctl 信号量semgetsemctl 内核看待ipc资源单独设计的模块ipc资源的维护 理解信号量总结 本篇主要是基于共享内存&#xff0c;延伸出对于消息队列和信号量&#xff0c;再从内核的角度去看这三个模块实现进程间通信 共享…...

【ArcGIS微课1000例】0100:ArcGIS for CAD软件下载与安装(附安装包)

ArcGIS for CAD软件下载与安装(附安装包)。 文章目录 一、ArcGIS for CAD概述1. ArcGIS for CAD介绍2. 主要功能二、ArcGIS for CAD下载三、ArcGIS for CAD安装1. 安装CAD2. 安装ArcGIS for CAD3. 配置一、ArcGIS for CAD概述 1. ArcGIS for CAD介绍 ArcGIS for CAD是Esri提…...

Django模型(一)

一、介绍 模型&#xff0c;就是python中的类对应数据库中的表 1.1、ORM ORM 就是通过实例对象的语法&#xff0c;完成关系型数据库的操作的技术&#xff0c;是"对象-关系映射"&#xff08;Object/Relational Mapping&#xff09; 的缩写 ORM 把数据库映射成对象 1.…...

【ChatGPT】文本向量化与余弦相似度:揭开文本处理的神秘面纱(5)

1、引言 在这个数字化的时代&#xff0c;我们每天都会面对大量的文本信息&#xff0c;从社交媒体到新闻报道&#xff0c;文本无处不在。但是&#xff0c;计算机要如何理解和处理这些文字呢&#xff1f;本文将为大家揭开其中的一些奥秘&#xff0c;详细解释文本向量化的概念&am…...

计算机中丢失mfc100u.dll怎么解决,详细解析mfc100u.dll丢失的解决方法

遭遇“无法找到mfc100u.dll”的错误不必过分担忧&#xff0c;这是一个普遍现象。许多用户在启动某些软件或游戏的时候可能会碰到这样的情况。通常&#xff0c;这个错误信息表明你的计算机系统中缺失了一个关键的动态链接库(DLL)文件&#xff0c;它可能会妨碍应用程序的顺利启动…...

代码随想录 Leetcode617.合并二叉树

题目&#xff1a; 代码(首刷看解析 2024年1月31日&#xff09;&#xff1a; class Solution { public:TreeNode* mergeTrees(TreeNode* root1, TreeNode* root2) {if (!root1) return root2;if (!root2) return root1;root1->val root2->val;root1->left mergeTree…...

知识价值1-github站点域名

github如果访问不上&#xff0c;有一个办法是hosts映射&#xff1a; github.com x.x.x.x github.global.ssl.fastly.net y.y.y.y assets-cdn.github.com z.z.z.z1 assets-cdn.github.com z.z.z.z2 assets-cdn.github.com z.z.z.z3 assets-cdn.github.com z.z.z.z3 那这几个域名…...

【PyRestTest】进行Benchmarking测试

PyRestTest支持通过Curl请求本身收集比较差的网络环境下的性能指标。 基准测试&#xff1a;它们扩展了测试中的配置元素&#xff0c;允许你进行相似的REST调用配置。然而&#xff0c;它们不对HTTP响应情况进行验证&#xff0c;它只收集指标数据。 下列选项被指定用于benchmar…...

cocos creator 调用预设体Prefab中的方法(调用另一个节点的方法)

调用预设体中的方法 通过cc.instantiate(this.star)创建这个预设体实例这个star预设体中添加了一个脚本组件star.ts 获取到这个脚本组件star.getComponent(‘star’).test()&#xff0c;并调用其中的test()方法同理可以用该方式像另一个节点中传值 //星星预设体property(cc.Pr…...

三年级下册语文第四单元作文:中华传统节日

三年级下册语文《中华传统节日》作文&#xff0c;一般会写&#xff1a;春节元宵节端午节中秋节重点不是介绍很多知识&#xff0c;而是&#xff1a; ✅ 节日习俗 ✅ 自己的经历 ✅ 节日气氛 ✅ 感受我用夸克网盘分享了「三年级下册语文作文1-8单元」&#xff0c;链接&#xff1a…...

成都制造企业SRM和ERP数据对不上,AI协同先治理什么?

系统都上线了&#xff0c;为什么协同还是慢不少成都制造企业已经有ERP&#xff0c;也陆续上了SRM、WMS、MES或QMS。采购订单在线审批&#xff0c;供应商可以在SRM里报价&#xff0c;仓库可以扫码入库&#xff0c;质量部门也有检验记录。可一到真实协同&#xff0c;问题仍然反复…...

3步搞定M3U8视频下载:N_m3u8DL-CLI-SimpleG图形界面终极指南

3步搞定M3U8视频下载&#xff1a;N_m3u8DL-CLI-SimpleG图形界面终极指南 【免费下载链接】N_m3u8DL-CLI-SimpleG N_m3u8DL-CLIs simple GUI 项目地址: https://gitcode.com/gh_mirrors/nm3/N_m3u8DL-CLI-SimpleG 你是否曾经遇到过在线视频无法保存的烦恼&#xff1f;特别…...

浙大联合腾讯让AI“看懂“三维世界

这项由浙江大学、腾讯混元大模型团队、香港科技大学及深圳湾区研究院联合完成的研究&#xff0c;以预印本形式发布于2026年5月&#xff0c;论文编号为arXiv:2605.15876&#xff0c;有兴趣深入了解的读者可通过该编号查询完整论文。当你拿起手机拍下一张客厅照片&#xff0c;现在…...

React Props:深入解析组件间的数据传递

React Props:深入解析组件间的数据传递 在React中,组件间的数据传递是构建复杂应用的关键。Props(属性)是React组件间数据传递的主要方式,它允许父组件向子组件传递数据。本文将深入探讨React Props的概念、使用方法以及注意事项。 一、Props的概念 Props是React组件的…...

【YOLO全系列架构演进史】2 YOLOv8:解耦头、Anchor-free与多任务统一框架

YOLOv8:解耦头、Anchor-free与多任务统一框架 1.1 总体定位与认知地图 1.1.1.1 我们为什么需要重新理解YOLOv8 YOLOv8在2023年发布时,很多人以为它只是YOLOv5的增量升级。但如果我们把神经网络看作一条工厂流水线,YOLOv8实际上把整条流水线的三个核心工位都换了:原料处理…...

为什么你的DeepSeek微调收敛慢?揭秘Attention初始化偏差导致的3轮内loss震荡——附自动校准工具脚本

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;DeepSeek注意力机制优化 DeepSeek系列模型在长上下文建模中对标准Transformer注意力进行了系统性重构&#xff0c;核心聚焦于降低计算复杂度与提升内存局部性。其注意力优化并非单一技术点叠加&#xf…...

为AI智能体项目选择与接入高性价比大模型API服务

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 为AI智能体项目选择与接入高性价比大模型API服务 在构建AI智能体或自动化工作流时&#xff0c;开发者面临的核心挑战往往集中在两个…...

3步搞定M3U8视频下载:告别在线播放限制的终极方案

3步搞定M3U8视频下载&#xff1a;告别在线播放限制的终极方案 【免费下载链接】N_m3u8DL-CLI-SimpleG N_m3u8DL-CLIs simple GUI 项目地址: https://gitcode.com/gh_mirrors/nm3/N_m3u8DL-CLI-SimpleG 你是否曾遇到过这样的烦恼&#xff1f;在线观看的视频无法保存&…...

Unity构建性能分析工具:四层数据采集与包体优化实战

1. 这不是又一个“构建日志查看器”&#xff0c;而是一把能切开Unity构建黑箱的手术刀 我第一次在客户项目里看到Build Report Tool时&#xff0c;它正安静地躺在一个被遗忘的Plugins文件夹里&#xff0c;名字叫 BuildReportTool_v2.3.1.unitypackage 。当时团队正为一个中型…...