|
|
|
|
@ -1,62 +1,102 @@
|
|
|
|
|
# zjp: 博客应用URL配置模块
|
|
|
|
|
# zjp: 定义博客系统的所有URL路由和视图映射
|
|
|
|
|
|
|
|
|
|
from django.urls import path
|
|
|
|
|
from django.views.decorators.cache import cache_page
|
|
|
|
|
|
|
|
|
|
from . import views
|
|
|
|
|
|
|
|
|
|
app_name = "blog"
|
|
|
|
|
app_name = "blog" # zjp: 定义应用命名空间,用于URL反向解析
|
|
|
|
|
|
|
|
|
|
urlpatterns = [
|
|
|
|
|
# zjp: 首页 - 显示文章列表
|
|
|
|
|
path(
|
|
|
|
|
r'',
|
|
|
|
|
views.IndexView.as_view(),
|
|
|
|
|
name='index'),
|
|
|
|
|
views.IndexView.as_view(), # zjp: 使用类视图处理首页请求
|
|
|
|
|
name='index'
|
|
|
|
|
),
|
|
|
|
|
|
|
|
|
|
# zjp: 首页分页 - 显示指定页码的文章列表
|
|
|
|
|
path(
|
|
|
|
|
r'page/<int:page>/',
|
|
|
|
|
views.IndexView.as_view(),
|
|
|
|
|
name='index_page'),
|
|
|
|
|
r'page/<int:page>/', # zjp: page参数为整数类型,表示页码
|
|
|
|
|
views.IndexView.as_view(), # zjp: 复用IndexView处理分页逻辑
|
|
|
|
|
name='index_page'
|
|
|
|
|
),
|
|
|
|
|
|
|
|
|
|
# zjp: 文章详情页 - 通过年份、月份、日期和文章ID访问具体文章
|
|
|
|
|
path(
|
|
|
|
|
r'article/<int:year>/<int:month>/<int:day>/<int:article_id>.html',
|
|
|
|
|
views.ArticleDetailView.as_view(),
|
|
|
|
|
name='detailbyid'),
|
|
|
|
|
r'article/<int:year>/<int:month>/<int:day>/<int:article_id>.html', # zjp: 多参数URL,包含时间信息和文章ID
|
|
|
|
|
views.ArticleDetailView.as_view(), # zjp: 文章详情类视图
|
|
|
|
|
name='detailbyid'
|
|
|
|
|
),
|
|
|
|
|
|
|
|
|
|
# zjp: 分类详情页 - 显示指定分类下的所有文章
|
|
|
|
|
path(
|
|
|
|
|
r'category/<slug:category_name>.html',
|
|
|
|
|
views.CategoryDetailView.as_view(),
|
|
|
|
|
name='category_detail'),
|
|
|
|
|
r'category/<slug:category_name>.html', # zjp: slug类型参数,保证URL友好性
|
|
|
|
|
views.CategoryDetailView.as_view(), # zjp: 分类文章列表视图
|
|
|
|
|
name='category_detail'
|
|
|
|
|
),
|
|
|
|
|
|
|
|
|
|
# zjp: 分类详情分页 - 显示指定分类下指定页码的文章
|
|
|
|
|
path(
|
|
|
|
|
r'category/<slug:category_name>/<int:page>.html',
|
|
|
|
|
views.CategoryDetailView.as_view(),
|
|
|
|
|
name='category_detail_page'),
|
|
|
|
|
r'category/<slug:category_name>/<int:page>.html', # zjp: 分类名和页码组合参数
|
|
|
|
|
views.CategoryDetailView.as_view(), # zjp: 复用分类视图处理分页
|
|
|
|
|
name='category_detail_page'
|
|
|
|
|
),
|
|
|
|
|
|
|
|
|
|
# zjp: 作者详情页 - 显示指定作者的所有文章
|
|
|
|
|
path(
|
|
|
|
|
r'author/<author_name>.html',
|
|
|
|
|
views.AuthorDetailView.as_view(),
|
|
|
|
|
name='author_detail'),
|
|
|
|
|
r'author/<author_name>.html', # zjp: 作者名称参数
|
|
|
|
|
views.AuthorDetailView.as_view(), # zjp: 作者文章列表视图
|
|
|
|
|
name='author_detail'
|
|
|
|
|
),
|
|
|
|
|
|
|
|
|
|
# zjp: 作者详情分页 - 显示指定作者下指定页码的文章
|
|
|
|
|
path(
|
|
|
|
|
r'author/<author_name>/<int:page>.html',
|
|
|
|
|
views.AuthorDetailView.as_view(),
|
|
|
|
|
name='author_detail_page'),
|
|
|
|
|
r'author/<author_name>/<int:page>.html', # zjp: 作者名和页码组合参数
|
|
|
|
|
views.AuthorDetailView.as_view(), # zjp: 复用作者视图处理分页
|
|
|
|
|
name='author_detail_page'
|
|
|
|
|
),
|
|
|
|
|
|
|
|
|
|
# zjp: 标签详情页 - 显示指定标签下的所有文章
|
|
|
|
|
path(
|
|
|
|
|
r'tag/<slug:tag_name>.html',
|
|
|
|
|
views.TagDetailView.as_view(),
|
|
|
|
|
name='tag_detail'),
|
|
|
|
|
r'tag/<slug:tag_name>.html', # zjp: slug类型标签名参数
|
|
|
|
|
views.TagDetailView.as_view(), # zjp: 标签文章列表视图
|
|
|
|
|
name='tag_detail'
|
|
|
|
|
),
|
|
|
|
|
|
|
|
|
|
# zjp: 标签详情分页 - 显示指定标签下指定页码的文章
|
|
|
|
|
path(
|
|
|
|
|
r'tag/<slug:tag_name>/<int:page>.html',
|
|
|
|
|
views.TagDetailView.as_view(),
|
|
|
|
|
name='tag_detail_page'),
|
|
|
|
|
r'tag/<slug:tag_name>/<int:page>.html', # zjp: 标签名和页码组合参数
|
|
|
|
|
views.TagDetailView.as_view(), # zjp: 复用标签视图处理分页
|
|
|
|
|
name='tag_detail_page'
|
|
|
|
|
),
|
|
|
|
|
|
|
|
|
|
# zjp: 归档页面 - 显示所有文章按时间归档,使用缓存加速(缓存1小时)
|
|
|
|
|
path(
|
|
|
|
|
'archives.html',
|
|
|
|
|
cache_page(
|
|
|
|
|
60 * 60)(
|
|
|
|
|
views.ArchivesView.as_view()),
|
|
|
|
|
name='archives'),
|
|
|
|
|
cache_page(60 * 60)(views.ArchivesView.as_view()), # zjp: 缓存装饰器,缓存1小时(3600秒)
|
|
|
|
|
name='archives'
|
|
|
|
|
),
|
|
|
|
|
|
|
|
|
|
# zjp: 友情链接页面 - 显示所有友情链接
|
|
|
|
|
path(
|
|
|
|
|
'links.html',
|
|
|
|
|
views.LinkListView.as_view(),
|
|
|
|
|
name='links'),
|
|
|
|
|
views.LinkListView.as_view(), # zjp: 链接列表视图
|
|
|
|
|
name='links'
|
|
|
|
|
),
|
|
|
|
|
|
|
|
|
|
# zjp: 文件上传接口 - 处理文件上传请求
|
|
|
|
|
path(
|
|
|
|
|
r'upload',
|
|
|
|
|
views.fileupload,
|
|
|
|
|
name='upload'),
|
|
|
|
|
views.fileupload, # zjp: 使用函数视图处理文件上传
|
|
|
|
|
name='upload'
|
|
|
|
|
),
|
|
|
|
|
|
|
|
|
|
# zjp: 缓存清理接口 - 清理系统缓存
|
|
|
|
|
path(
|
|
|
|
|
r'clean',
|
|
|
|
|
views.clean_cache_view,
|
|
|
|
|
name='clean'),
|
|
|
|
|
]
|
|
|
|
|
views.clean_cache_view, # zjp: 使用函数视图处理缓存清理
|
|
|
|
|
name='clean'
|
|
|
|
|
),
|
|
|
|
|
]
|