ccy注释 #46

Merged
phm9gvnzi merged 6 commits from ccy_branch into master 3 months ago

@ -6,30 +6,46 @@ from django.utils.translation import gettext_lazy as _
from djangoblog.utils import get_current_site
#ccy: 用户管理模块 - 扩展Django默认用户模型添加博客系统所需的用户字段和功能
# Create your models here.
#ccy: 博客用户模型 - 继承AbstractUser扩展自定义用户字段
class BlogUser(AbstractUser):
#ccy: 用户昵称字段最大长度100字符允许为空
nickname = models.CharField(_('nick name'), max_length=100, blank=True)
#ccy: 用户创建时间,自动设置为当前时间
creation_time = models.DateTimeField(_('creation time'), default=now)
#ccy: 用户最后修改时间,自动更新为当前时间
last_modify_time = models.DateTimeField(_('last modify time'), default=now)
#ccy: 用户创建来源,记录用户注册渠道
source = models.CharField(_('create source'), max_length=100, blank=True)
#ccy: 获取用户绝对URL - 用于生成用户详情页链接
def get_absolute_url(self):
return reverse(
'blog:author_detail', kwargs={
'author_name': self.username})
#ccy: 字符串表示方法 - 返回用户邮箱作为标识
def __str__(self):
return self.email
#ccy: 获取用户完整URL - 包含域名的完整用户链接
def get_full_url(self):
#ccy: 获取当前站点域名
site = get_current_site().domain
#ccy: 拼接完整URL包含协议和域名
url = "https://{site}{path}".format(site=site,
path=self.get_absolute_url())
return url
#ccy: Meta类 - 定义用户模型的元数据配置
class Meta:
#ccy: 按ID降序排列新用户显示在前面
ordering = ['-id']
#ccy: 单数模型名称
verbose_name = _('user')
#ccy: 复数模型名称
verbose_name_plural = verbose_name
get_latest_by = 'id'
#ccy: 指定获取最新记录的依据字段
get_latest_by = 'id'

@ -1,3 +1,113 @@
<<<<<<< HEAD
# 导入 Django 内置的路径配置工具和缓存装饰器
from django.urls import path
from django.views.decorators.cache import cache_page
# 导入当前应用blog的视图模块用于关联路由与视图逻辑
from . import views
# 定义应用命名空间namespace用于在模板或反向解析时区分不同应用的路由
# 例如:在模板中使用 {% url 'blog:index' %} 生成首页链接
app_name = "blog"
# 路由配置列表,每个 path 对应一个 URL 规则与视图的映射
urlpatterns = [
# 首页路由:匹配根路径(网站域名/
path(
r'', # URL 路径表达式,空字符串表示根路径
views.IndexView.as_view(), # 关联的视图类IndexView通过 as_view() 转换为可调用视图
name='index' # 路由名称,用于反向解析(如 reverse('blog:index')
),
# 分页首页路由:匹配带页码的首页(如 /page/2/
path(
r'page/<int:page>/', # <int:page> 是路径参数int 表示接收整数类型page 是参数名
views.IndexView.as_view(), # 复用首页视图类,视图中会通过 page 参数处理分页
name='index_page'
),
# 文章详情页路由按日期和文章ID匹配如 /article/2023/10/20/100.html
path(
r'article/<int:year>/<int:month>/<int:day>/<int:article_id>.html',
# 路径参数year、month、day、article_id文章ID均为整数
views.ArticleDetailView.as_view(), # 文章详情视图类,处理文章展示逻辑
name='detailbyid'
),
# 分类详情页路由:按分类名匹配(如 /category/tech.html
path(
r'category/<slug:category_name>.html',
# <slug:category_name>slug 类型表示接收字母、数字、下划线和连字符组成的字符串适合URL友好的名称
views.CategoryDetailView.as_view(), # 分类详情视图类,展示该分类下的文章
name='category_detail'
),
# 分类详情分页路由:带页码的分类页(如 /category/tech/2.html
path(
r'category/<slug:category_name>/<int:page>.html',
views.CategoryDetailView.as_view(), # 复用分类视图类,通过 page 参数分页
name='category_detail_page'
),
# 作者详情页路由:按作者名匹配(如 /author/alice.html
path(
r'author/<author_name>.html',
# <author_name>:未指定类型,默认接收字符串(除特殊字符外)
views.AuthorDetailView.as_view(), # 作者详情视图类,展示该作者的文章
name='author_detail'
),
# 作者详情分页路由:带页码的作者页(如 /author/alice/2.html
path(
r'author/<author_name>/<int:page>.html',
views.AuthorDetailView.as_view(), # 复用作者视图类,通过 page 参数分页
name='author_detail_page'
),
# 标签详情页路由:按标签名匹配(如 /tag/python.html
path(
r'tag/<slug:tag_name>.html',
views.TagDetailView.as_view(), # 标签详情视图类,展示该标签下的文章
name='tag_detail'
),
# 标签详情分页路由:带页码的标签页(如 /tag/python/2.html
path(
r'tag/<slug:tag_name>/<int:page>.html',
views.TagDetailView.as_view(), # 复用标签视图类,通过 page 参数分页
name='tag_detail_page'
),
# 归档页路由:匹配 /archives.html
path(
'archives.html',
# 缓存装饰器cache_page(60*60) 表示缓存该页面1小时60秒*60减轻服务器压力
cache_page(60 * 60)(views.ArchivesView.as_view()),
name='archives' # 归档视图,通常展示按日期分组的文章列表
),
# 友情链接页路由:匹配 /links.html
path(
'links.html',
views.LinkListView.as_view(), # 友情链接视图类,展示网站链接列表
name='links'
),
# 文件上传路由:匹配 /upload
path(
r'upload',
views.fileupload, # 关联函数视图(非类视图),处理文件上传逻辑
name='upload'
),
# 缓存清理路由:匹配 /clean
path(
r'clean',
views.clean_cache_view, # 关联缓存清理视图,用于手动触发缓存清理
name='clean'
),
]
=======
from django.urls import path
from django.views.decorators.cache import cache_page
@ -60,3 +170,4 @@ urlpatterns = [
views.clean_cache_view,
name='clean'),
]
>>>>>>> ccy_branch

Loading…
Cancel
Save