当前位置: 首页 > 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…...

前端倒计时误差!

提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...

Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)

目录 一、&#x1f44b;&#x1f3fb;前言 二、&#x1f608;sinx波动的基本原理 三、&#x1f608;波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、&#x1f30a;波动优化…...

MySQL 部分重点知识篇

一、数据库对象 1. 主键 定义 &#xff1a;主键是用于唯一标识表中每一行记录的字段或字段组合。它具有唯一性和非空性特点。 作用 &#xff1a;确保数据的完整性&#xff0c;便于数据的查询和管理。 示例 &#xff1a;在学生信息表中&#xff0c;学号可以作为主键&#xff…...

【前端异常】JavaScript错误处理:分析 Uncaught (in promise) error

在前端开发中&#xff0c;JavaScript 异常是不可避免的。随着现代前端应用越来越多地使用异步操作&#xff08;如 Promise、async/await 等&#xff09;&#xff0c;开发者常常会遇到 Uncaught (in promise) error 错误。这个错误是由于未正确处理 Promise 的拒绝&#xff08;r…...

ubuntu22.04有线网络无法连接,图标也没了

今天突然无法有线网络无法连接任何设备&#xff0c;并且图标都没了 错误案例 往上一顿搜索&#xff0c;试了很多博客都不行&#xff0c;比如 Ubuntu22.04右上角网络图标消失 最后解决的办法 下载网卡驱动&#xff0c;重新安装 操作步骤 查看自己网卡的型号 lspci | gre…...

React从基础入门到高级实战:React 实战项目 - 项目五:微前端与模块化架构

React 实战项目&#xff1a;微前端与模块化架构 欢迎来到 React 开发教程专栏 的第 30 篇&#xff01;在前 29 篇文章中&#xff0c;我们从 React 的基础概念逐步深入到高级技巧&#xff0c;涵盖了组件设计、状态管理、路由配置、性能优化和企业级应用等核心内容。这一次&…...

java高级——高阶函数、如何定义一个函数式接口类似stream流的filter

java高级——高阶函数、stream流 前情提要文章介绍一、函数伊始1.1 合格的函数1.2 有形的函数2. 函数对象2.1 函数对象——行为参数化2.2 函数对象——延迟执行 二、 函数编程语法1. 函数对象表现形式1.1 Lambda表达式1.2 方法引用&#xff08;Math::max&#xff09; 2 函数接口…...

医疗AI模型可解释性编程研究:基于SHAP、LIME与Anchor

1 医疗树模型与可解释人工智能基础 医疗领域的人工智能应用正迅速从理论研究转向临床实践,在这一过程中,模型可解释性已成为确保AI系统被医疗专业人员接受和信任的关键因素。基于树模型的集成算法(如RandomForest、XGBoost、LightGBM)因其卓越的预测性能和相对良好的解释性…...

ArcGIS Pro+ArcGIS给你的地图加上北回归线!

今天来看ArcGIS Pro和ArcGIS中如何给制作的中国地图或者其他大范围地图加上北回归线。 我们将在ArcGIS Pro和ArcGIS中一同介绍。 1 ArcGIS Pro中设置北回归线 1、在ArcGIS Pro中初步设置好经纬格网等&#xff0c;设置经线、纬线都以10间隔显示。 2、需要插入背会归线&#xf…...

python基础语法Ⅰ

python基础语法Ⅰ 常量和表达式变量是什么变量的语法1.定义变量使用变量 变量的类型1.整数2.浮点数(小数)3.字符串4.布尔5.其他 动态类型特征注释注释是什么注释的语法1.行注释2.文档字符串 注释的规范 常量和表达式 我们可以把python当作一个计算器&#xff0c;来进行一些算术…...