Update urls.py

pull/10/head
plhw57tbe 4 months ago
parent c4f725f8f4
commit 14db64d21c

@ -13,52 +13,88 @@ Including another URLconf
1. Import the include() function: from django.conf.urls import url, include
2. Add a URL to urlpatterns: url(r'^blog/', include('blog.urls'))
"""
# 导入项目配置:用于获取静态文件/媒体文件路径、DEBUG 状态等
from django.conf import settings
# 导入国际化路由工具:生成带语言前缀的路由(如 /en/admin/、/zh-hans/blog/
from django.conf.urls.i18n import i18n_patterns
# 导入静态文件路由工具:开发环境下提供静态文件访问(生产环境需 Nginx 处理)
from django.conf.urls.static import static
# 导入站点地图视图:关联站点地图配置,生成 sitemap.xml
from django.contrib.sitemaps.views import sitemap
# 导入 URL 路由组件path 用于精确匹配include 用于引入子应用路由
from django.urls import path, include
# 导入 re_path支持正则表达式匹配 URL适配复杂路由场景
from django.urls import re_path
# 导入 Haystack 搜索视图工厂:用于自定义搜索视图和表单
from haystack.views import search_view_factory
from blog.views import EsSearchView
from djangoblog.admin_site import admin_site
from djangoblog.elasticsearch_backend import ElasticSearchModelSearchForm
from djangoblog.feeds import DjangoBlogFeed
from djangoblog.sitemap import ArticleSiteMap, CategorySiteMap, StaticViewSitemap, TagSiteMap, UserSiteMap
# 导入项目自定义视图和配置:关联核心功能路由
from blog.views import EsSearchView # 自定义 Elasticsearch 搜索视图
from djangoblog.admin_site import admin_site # 自定义后台管理站点(替代默认 admin
from djangoblog.elasticsearch_backend import ElasticSearchModelSearchForm # 自定义搜索表单
from djangoblog.feeds import DjangoBlogFeed # RSS 订阅 Feed 视图
from djangoblog.sitemap import ( # 站点地图配置类
ArticleSiteMap, CategorySiteMap, StaticViewSitemap, TagSiteMap, UserSiteMap
)
# 站点地图聚合配置:将各类型站点地图归类,用于生成统一的 sitemap.xml
sitemaps = {
'blog': ArticleSiteMap,
'Category': CategorySiteMap,
'Tag': TagSiteMap,
'User': UserSiteMap,
'static': StaticViewSitemap
'blog': ArticleSiteMap, # 文章站点地图
'Category': CategorySiteMap, # 分类站点地图
'Tag': TagSiteMap, # 标签站点地图
'User': UserSiteMap, # 作者站点地图
'static': StaticViewSitemap # 静态页面站点地图
}
handler404 = 'blog.views.page_not_found_view'
handler500 = 'blog.views.server_error_view'
handle403 = 'blog.views.permission_denied_view'
# 自定义错误页面路由:指定 404/500/403 错误时跳转的视图
handler404 = 'blog.views.page_not_found_view' # 404 页面未找到
handler500 = 'blog.views.server_error_view' # 500 服务器内部错误
handle403 = 'blog.views.permission_denied_view'# 403 权限拒绝(注意变量名应为 handler403此处可能是笔误
# 基础 URL 路由:不包含语言前缀的公共路由
urlpatterns = [
# 国际化路由:提供语言切换功能(如 /i18n/setlang/ 接口)
path('i18n/', include('django.conf.urls.i18n')),
]
# 带语言前缀的路由:通过 i18n_patterns 自动添加语言前缀(如 /zh-hans/、/en/
# prefix_default_language=False默认语言不显示前缀如中文默认不显示 /zh-hans/,直接用根路径)
urlpatterns += i18n_patterns(
# 1. 后台管理路由:使用自定义的 admin_site替代默认 admin访问路径如 /admin/
re_path(r'^admin/', admin_site.urls),
# 2. 博客核心路由:引入 blog 应用的子路由,命名空间为 'blog'(路由名如 blog:index
re_path(r'', include('blog.urls', namespace='blog')),
# 3. Markdown 编辑器路由:引入 mdeditor 第三方应用的路由,用于文章编辑时的 Markdown 预览
re_path(r'mdeditor/', include('mdeditor.urls')),
# 4. 评论路由:引入 comments 应用的子路由,命名空间为 'comment'
re_path(r'', include('comments.urls', namespace='comment')),
# 5. 用户账户路由:引入 accounts 应用的子路由(登录、注册、个人中心),命名空间为 'account'
re_path(r'', include('accounts.urls', namespace='account')),
# 6. 第三方登录路由:引入 oauth 应用的子路由GitHub、微博登录命名空间为 'oauth'
re_path(r'', include('oauth.urls', namespace='oauth')),
# 7. 站点地图路由:生成 sitemap.xml供搜索引擎抓取访问路径 /sitemap.xml
re_path(r'^sitemap\.xml$', sitemap, {'sitemaps': sitemaps},
name='django.contrib.sitemaps.views.sitemap'),
# 8. RSS 订阅路由:提供两种访问路径(/feed/ 和 /rss/),均指向 DjangoBlogFeed 视图
re_path(r'^feed/$', DjangoBlogFeed()),
re_path(r'^rss/$', DjangoBlogFeed()),
re_path('^search', search_view_factory(view_class=EsSearchView, form_class=ElasticSearchModelSearchForm),
name='search'),
# 9. 搜索路由使用自定义的搜索视图EsSearchView和表单ElasticSearchModelSearchForm
# 访问路径如 /search?q=关键词,命名为 'search'
re_path('^search', search_view_factory(
view_class=EsSearchView,
form_class=ElasticSearchModelSearchForm
), name='search'),
# 10. 服务器管理路由:引入 servermanager 应用的子路由(命令执行、日志查看),命名空间为 'servermanager'
re_path(r'', include('servermanager.urls', namespace='servermanager')),
re_path(r'', include('owntracks.urls', namespace='owntracks'))
, prefix_default_language=False) + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
# 11. 位置追踪路由:引入 owntracks 应用的子路由(位置数据查看),命名空间为 'owntracks'
re_path(r'', include('owntracks.urls', namespace='owntracks')),
prefix_default_language=False # 默认语言不显示语言前缀
)
# 静态文件路由开发环境下DEBUG=True通过 Django 提供静态文件访问(生产环境需注释,用 Nginx 处理)
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
# 媒体文件路由:仅在 DEBUG=True开发环境时生效提供用户上传文件的访问如 /media/avatar.jpg
if settings.DEBUG:
urlpatterns += static(settings.MEDIA_URL,
document_root=settings.MEDIA_ROOT)
document_root=settings.MEDIA_ROOT)
Loading…
Cancel
Save