|
|
|
|
@ -0,0 +1,98 @@
|
|
|
|
|
"""djangoblog URL Configuration
|
|
|
|
|
项目URL路由总配置文件:定义所有URL与视图/应用的映射关系
|
|
|
|
|
核心作用是将用户访问的URL地址,分发到对应的应用或视图函数处理
|
|
|
|
|
"""
|
|
|
|
|
# 导入项目配置,用于获取静态资源、媒体文件路径等
|
|
|
|
|
from django.conf import settings
|
|
|
|
|
# 导入国际化URL配置工具,支持多语言URL前缀(如/en/、/zh-hans/)
|
|
|
|
|
from django.conf.urls.i18n import i18n_patterns
|
|
|
|
|
# 导入静态资源URL配置工具,用于开发环境下提供静态文件访问
|
|
|
|
|
from django.conf.urls.static import static
|
|
|
|
|
# 导入站点地图视图,用于生成sitemap.xml
|
|
|
|
|
from django.contrib.sitemaps.views import sitemap
|
|
|
|
|
# 导入URL路径配置工具(path用于固定路径,re_path支持正则匹配,include用于包含子应用URL)
|
|
|
|
|
from django.urls import path, include, re_path
|
|
|
|
|
# 导入Haystack搜索视图工厂,用于自定义搜索视图
|
|
|
|
|
from haystack.views import search_view_factory
|
|
|
|
|
|
|
|
|
|
# 导入自定义视图和配置:博客搜索视图、自定义Admin站点、ElasticSearch搜索表单
|
|
|
|
|
from blog.views import EsSearchView
|
|
|
|
|
from djangoblog.admin_site import admin_site
|
|
|
|
|
from djangoblog.elasticsearch_backend import ElasticSearchModelSearchForm
|
|
|
|
|
# 导入RSS订阅Feed和站点地图类
|
|
|
|
|
from djangoblog.feeds import DjangoBlogFeed
|
|
|
|
|
from djangoblog.sitemap import (ArticleSiteMap, CategorySiteMap,
|
|
|
|
|
StaticViewSitemap, TagSiteMap, UserSiteMap)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# -------------------------- 站点地图配置 --------------------------
|
|
|
|
|
# 定义站点地图字典:关联不同类型页面的Sitemap类,用于生成sitemap.xml
|
|
|
|
|
sitemaps = {
|
|
|
|
|
'blog': ArticleSiteMap, # 文章页面的站点地图
|
|
|
|
|
'Category': CategorySiteMap, # 分类页面的站点地图
|
|
|
|
|
'Tag': TagSiteMap, # 标签页面的站点地图
|
|
|
|
|
'User': UserSiteMap, # 用户主页的站点地图
|
|
|
|
|
'static': StaticViewSitemap # 静态页面(如首页)的站点地图
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# -------------------------- 自定义错误页面配置 --------------------------
|
|
|
|
|
# 配置404(页面不存在)错误对应的处理视图
|
|
|
|
|
handler404 = 'blog.views.page_not_found_view'
|
|
|
|
|
# 配置500(服务器内部错误)错误对应的处理视图
|
|
|
|
|
handler500 = 'blog.views.server_error_view'
|
|
|
|
|
# 配置403(权限不足)错误对应的处理视图
|
|
|
|
|
handle403 = 'blog.views.permission_denied_view'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# -------------------------- 基础URL配置 --------------------------
|
|
|
|
|
# 非国际化URL列表:不随语言切换变化的URL
|
|
|
|
|
urlpatterns = [
|
|
|
|
|
# 国际化切换入口:提供语言选择功能(如切换中英文)
|
|
|
|
|
path('i18n/', include('django.conf.urls.i18n')),
|
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# -------------------------- 国际化URL配置 --------------------------
|
|
|
|
|
# 国际化URL列表:会自动添加语言前缀(如/zh-hans/admin/、/en/admin/)
|
|
|
|
|
# prefix_default_language=False:默认语言(如中文)不添加语言前缀,保持URL简洁
|
|
|
|
|
urlpatterns += i18n_patterns(
|
|
|
|
|
# 自定义Admin后台URL:使用项目自定义的admin_site(非Django默认Admin)
|
|
|
|
|
re_path(r'^admin/', admin_site.urls),
|
|
|
|
|
# 博客核心功能URL:包含文章列表、详情等,命名空间为'blog'
|
|
|
|
|
re_path(r'', include('blog.urls', namespace='blog')),
|
|
|
|
|
# Markdown编辑器URL:集成mdeditor插件的路由
|
|
|
|
|
re_path(r'mdeditor/', include('mdeditor.urls')),
|
|
|
|
|
# 评论功能URL:包含评论提交、列表等,命名空间为'comment'
|
|
|
|
|
re_path(r'', include('comments.urls', namespace='comment')),
|
|
|
|
|
# 用户账户功能URL:包含登录、注册、个人中心等,命名空间为'account'
|
|
|
|
|
re_path(r'', include('accounts.urls', namespace='account')),
|
|
|
|
|
# 第三方登录URL:包含GitHub、微信等登录,命名空间为'oauth'
|
|
|
|
|
re_path(r'', include('oauth.urls', namespace='oauth')),
|
|
|
|
|
# 站点地图URL:生成sitemap.xml,供搜索引擎抓取
|
|
|
|
|
re_path(r'^sitemap\.xml$', sitemap, {'sitemaps': sitemaps},
|
|
|
|
|
name='django.contrib.sitemaps.views.sitemap'),
|
|
|
|
|
# RSS订阅URL:提供两种路径(/feed/和/rss/),均指向DjangoBlogFeed
|
|
|
|
|
re_path(r'^feed/$', DjangoBlogFeed()),
|
|
|
|
|
re_path(r'^rss/$', DjangoBlogFeed()),
|
|
|
|
|
# 搜索功能URL:使用ElasticSearch搜索视图和表单,命名空间为'search'
|
|
|
|
|
re_path('^search', search_view_factory(
|
|
|
|
|
view_class=EsSearchView,
|
|
|
|
|
form_class=ElasticSearchModelSearchForm
|
|
|
|
|
), name='search'),
|
|
|
|
|
# 服务器管理功能URL:包含系统监控等,命名空间为'servermanager'
|
|
|
|
|
re_path(r'', include('servermanager.urls', namespace='servermanager')),
|
|
|
|
|
# 位置追踪功能URL:集成owntracks的路由,命名空间为'owntracks'
|
|
|
|
|
re_path(r'', include('owntracks.urls', namespace='owntracks')),
|
|
|
|
|
prefix_default_language=False # 默认语言URL不添加语言前缀
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# -------------------------- 静态资源与媒体文件URL配置 --------------------------
|
|
|
|
|
# 开发环境下:添加静态文件URL映射(生产环境由Nginx/Apache处理)
|
|
|
|
|
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
|
|
|
|
|
|
|
|
|
|
# DEBUG模式下(开发环境):添加媒体文件(用户上传文件)的URL映射
|
|
|
|
|
if settings.DEBUG:
|
|
|
|
|
urlpatterns += static(settings.MEDIA_URL,
|
|
|
|
|
document_root=settings.MEDIA_ROOT)
|