网站功能图,琪歌 wordpress,阿里云wordpress搭建,类似开发次元世界文章目录 写在前面Django简介主要程序运行结果系列文章写在后面 写在前面
本期内容
基于django的简单网页计数器
所需环境
pythonpycharm或vscodedjango
下载地址
https://download.csdn.net/download/m0_68111267/88795604
Django简介
Django 是一个用 Python 编写的高… 文章目录 写在前面Django简介主要程序运行结果系列文章写在后面 写在前面
本期内容
基于django的简单网页计数器
所需环境
pythonpycharm或vscodedjango
下载地址
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, querysetNone):obj super().get_object(querysetqueryset)obj.viewed()return objclass ArticleListView(ListView):queryset Article.objects.filter(statusp).order_by(-pub_date)paginate_by 6……请下载后查看完整代码这段代码定义了两个基于 Django Generic Views 的视图类用于处理文章列表和文章详情页面的显示 ArticleDetailView 类 继承自 django.views.generic.DetailView这是一个用于展示单个模型对象详细信息的视图。 model Article指定该视图将处理 Article 模型的对象。 重写了 get_object 方法 使用 super().get_object(querysetqueryset) 调用父类方法获取请求对应的文章对象。在获取到对象后立即调用 obj.viewed() 方法这会增加文章的浏览量views 字段加 1。最后返回文章对象。这样每次用户访问文章详情页时都会触发浏览次数的更新。 ArticleListView 类 继承自 django.views.generic.ListView用于显示一个包含多个模型对象的列表视图。queryset Article.objects.filter(statusp).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_length200, uniqueTrue)slug models.SlugField(slug, max_length60)body models.TextField(正文)pub_date models.DateTimeField(发布时间, default now, nullTrue)create_date models.DateTimeField(创建时间, auto_now_addTrue)mod_date models.DateTimeField(修改时间, auto_nowTrue)status models.CharField(文章状态, max_length1, choicesSTATUS_CHOICES, defaultp)views models.PositiveIntegerField(浏览量, default0)author models.ForeignKey(User, verbose_name作者, on_deletemodels.CASCADE)
……请下载后查看完整代码这段代码定义了一个名为 Article 的 Django 模型类用于表示博客文章。下面对各个部分进行详细分析 导入相关模块 从 django.db.models 导入 models 类用于定义数据库模型。从 django.contrib.auth.models 导入 User 类表示系统中的用户模型以便在 Article 中引用文章的作者。从 django.urls 导入 reverse 函数用于生成 URL 链接。从 django.utils.timezone 导入 now 函数获取当前时间。 定义 Article 类继承自 models.Model这是 Django 数据库模型的基本类。 STATUS_CHOICES一个元组列表用于设置文章状态字段的可选项包括草稿draft和已发表published两种状态。 字段定义 title: 文章标题CharField 类型最大长度为 200 个字符并要求唯一uniqueTrue。slug: slug 字段通常用于创建 SEO 友好的 URLSlugField 类型最大长度为 60 个字符。body: 文章正文TextField 类型可以存储大量文本内容。pub_date: 发布日期时间DateTimeField 类型默认值为当前时间now允许为空nullTrue。create_date: 创建日期时间DateTimeField 类型自动设置为对象创建时的时间auto_now_addTrue。mod_date: 修改日期时间DateTimeField 类型自动更新为对象最后一次修改的时间auto_nowTrue。status: 文章状态CharField 类型长度为 1其选择范围由 STATUS_CHOICES 定义默认值为已发表‘p’。views: 文章浏览量PositiveIntegerField 类型默认值为 0。author: 文章作者ForeignKey 类型关联到 User 模型当该文章被删除时会级联删除on_deletemodels.CASCADE。 定义字符串表示方法 __str__返回文章的标题方便在管理后台或其他地方显示。 Meta 类内定义元信息 ordering: 指定默认排序方式按照发布日期降序排列‘-pub_date’。verbose_name 和 verbose_name_plural设置单数和复数形式的模型名称在后台展示时使用。get_latest_by指定获取最新文章时依据的字段这里是 ‘create_date’。 定义 get_absolute_url 方法返回文章详情页的 URL通过传递文章ID给路由 ‘blog:article_detail’ 来实现。 定义 viewed 方法用于增加文章的浏览量。每当调用此方法时文章的 views 字段加1并仅更新 views 字段 (update_fields[views])。这个方法可以在视图函数中调用以确保每次访问文章详情页面时更新浏览次数。
运行结果 系列文章
序号目录直达链接1入门实战丨基于Tkinter的简易计算器https://want595.blog.csdn.net/article/details/1317311732入门实战丨基于Tkinter的生日管理系统https://want595.blog.csdn.net/article/details/1317313803数据库实战丨基于TkinterMySQL的学生成绩管理系统https://want595.blog.csdn.net/article/details/1309927214数据库实战丨基于TkinterMySQL的梅西生涯数据管理系统https://want595.blog.csdn.net/article/details/1309955645Web实战丨基于Django与Bootstrap的在线计算器https://want595.blog.csdn.net/article/details/1344243816Web实战丨基于djangohtmlcss的在线购物商城https://want595.blog.csdn.net/article/details/1354660527Web实战丨基于djangohtmlcssjs的电子商务网站https://want595.blog.csdn.net/article/details/1355068098Web实战丨基于Django与HTML的用户登录验证系统https://want595.blog.csdn.net/article/details/1355134139Web实战丨基于djangohtmlcssjs的学院门户网站https://want595.blog.csdn.net/article/details/13551106610Web实战丨基于Django与HTML的新闻发布系统https://want595.blog.csdn.net/article/details/13551982411Web实战丨基于djangohtmlcssjs的在线博客网站https://want595.blog.csdn.net/article/details/13553676512……
写在后面
我是一只有趣的兔子感谢你的喜欢