diff --git a/src/DjangoBlog-master(1)/DjangoBlog-master/blog/urls.py b/src/DjangoBlog-master(1)/DjangoBlog-master/blog/urls.py index adf2703..e1c78e4 100644 --- a/src/DjangoBlog-master(1)/DjangoBlog-master/blog/urls.py +++ b/src/DjangoBlog-master(1)/DjangoBlog-master/blog/urls.py @@ -1,62 +1,108 @@ +# 导入 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'', - views.IndexView.as_view(), - name='index'), + r'', # URL 路径表达式,空字符串表示根路径 + views.IndexView.as_view(), # 关联的视图类(IndexView),通过 as_view() 转换为可调用视图 + name='index' # 路由名称,用于反向解析(如 reverse('blog:index')) + ), + + # 分页首页路由:匹配带页码的首页(如 /page/2/) path( - r'page//', - views.IndexView.as_view(), - name='index_page'), + r'page//', # 是路径参数,int 表示接收整数类型,page 是参数名 + views.IndexView.as_view(), # 复用首页视图类,视图中会通过 page 参数处理分页 + name='index_page' + ), + + # 文章详情页路由:按日期和文章ID匹配(如 /article/2023/10/20/100.html) path( r'article////.html', - views.ArticleDetailView.as_view(), - name='detailbyid'), + # 路径参数:year(年)、month(月)、day(日)、article_id(文章ID),均为整数 + views.ArticleDetailView.as_view(), # 文章详情视图类,处理文章展示逻辑 + name='detailbyid' + ), + + # 分类详情页路由:按分类名匹配(如 /category/tech.html) path( r'category/.html', - views.CategoryDetailView.as_view(), - name='category_detail'), + # :slug 类型表示接收字母、数字、下划线和连字符组成的字符串(适合URL友好的名称) + views.CategoryDetailView.as_view(), # 分类详情视图类,展示该分类下的文章 + name='category_detail' + ), + + # 分类详情分页路由:带页码的分类页(如 /category/tech/2.html) path( r'category//.html', - views.CategoryDetailView.as_view(), - name='category_detail_page'), + views.CategoryDetailView.as_view(), # 复用分类视图类,通过 page 参数分页 + name='category_detail_page' + ), + + # 作者详情页路由:按作者名匹配(如 /author/alice.html) path( r'author/.html', - views.AuthorDetailView.as_view(), - name='author_detail'), + # :未指定类型,默认接收字符串(除特殊字符外) + views.AuthorDetailView.as_view(), # 作者详情视图类,展示该作者的文章 + name='author_detail' + ), + + # 作者详情分页路由:带页码的作者页(如 /author/alice/2.html) path( r'author//.html', - views.AuthorDetailView.as_view(), - name='author_detail_page'), + views.AuthorDetailView.as_view(), # 复用作者视图类,通过 page 参数分页 + name='author_detail_page' + ), + + # 标签详情页路由:按标签名匹配(如 /tag/python.html) path( r'tag/.html', - views.TagDetailView.as_view(), - name='tag_detail'), + views.TagDetailView.as_view(), # 标签详情视图类,展示该标签下的文章 + name='tag_detail' + ), + + # 标签详情分页路由:带页码的标签页(如 /tag/python/2.html) path( r'tag//.html', - views.TagDetailView.as_view(), - name='tag_detail_page'), + views.TagDetailView.as_view(), # 复用标签视图类,通过 page 参数分页 + name='tag_detail_page' + ), + + # 归档页路由:匹配 /archives.html path( 'archives.html', - cache_page( - 60 * 60)( - views.ArchivesView.as_view()), - name='archives'), + # 缓存装饰器: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'), + views.LinkListView.as_view(), # 友情链接视图类,展示网站链接列表 + name='links' + ), + + # 文件上传路由:匹配 /upload path( r'upload', - views.fileupload, - name='upload'), + views.fileupload, # 关联函数视图(非类视图),处理文件上传逻辑 + name='upload' + ), + + # 缓存清理路由:匹配 /clean path( r'clean', - views.clean_cache_view, - name='clean'), -] + views.clean_cache_view, # 关联缓存清理视图,用于手动触发缓存清理 + name='clean' + ), +] \ No newline at end of file