|
|
"""djangoblog URL 配置
|
|
|
|
|
|
`urlpatterns` 列表将 URL 路由到视图。更多信息请参阅:
|
|
|
https://docs.djangoproject.com/en/1.10/topics/http/urls/
|
|
|
示例:
|
|
|
函数视图
|
|
|
1. 导入: from my_app import views
|
|
|
2. 添加 URL 到 urlpatterns: url(r'^$', views.home, name='home')
|
|
|
基于类的视图
|
|
|
1. 导入: from other_app.views import Home
|
|
|
2. 添加 URL 到 urlpatterns: url(r'^$', Home.as_view(), name='home')
|
|
|
包含其他 URLconf
|
|
|
1. 导入 include() 函数: from django.conf.urls import url, include
|
|
|
2. 添加 URL 到 urlpatterns: url(r'^blog/', include('blog.urls'))
|
|
|
"""
|
|
|
from django.conf import settings
|
|
|
from django.conf.urls.i18n import i18n_patterns # 国际化URL模式
|
|
|
from django.conf.urls.static import static # 静态文件服务
|
|
|
from django.contrib.sitemaps.views import sitemap # 站点地图视图
|
|
|
from django.urls import path, include
|
|
|
from django.urls import re_path
|
|
|
from haystack.views import search_view_factory # Haystack搜索视图工厂
|
|
|
|
|
|
# 导入自定义视图和组件
|
|
|
from blog.views import EsSearchView
|
|
|
from djangoblog.admin_site import admin_site # 自定义管理员站点
|
|
|
from djangoblog.elasticsearch_backend import ElasticSearchModelSearchForm # Elasticsearch搜索表单
|
|
|
from djangoblog.feeds import DjangoBlogFeed # RSS订阅源
|
|
|
from djangoblog.sitemap import ArticleSiteMap, CategorySiteMap, StaticViewSitemap, TagSiteMap, UserSiteMap
|
|
|
|
|
|
# 站点地图配置字典
|
|
|
sitemaps = {
|
|
|
'blog': ArticleSiteMap, # 文章站点地图
|
|
|
'Category': CategorySiteMap, # 分类站点地图
|
|
|
'Tag': TagSiteMap, # 标签站点地图
|
|
|
'User': UserSiteMap, # 用户站点地图
|
|
|
'static': StaticViewSitemap # 静态页面站点地图
|
|
|
}
|
|
|
|
|
|
# 自定义错误处理视图
|
|
|
handler404 = 'blog.views.page_not_found_view' # 404页面未找到
|
|
|
handler500 = 'blog.views.server_error_view' # 500服务器错误
|
|
|
handle403 = 'blog.views.permission_denied_view' # 403权限拒绝
|
|
|
|
|
|
# 基本URL模式
|
|
|
urlpatterns = [
|
|
|
path('i18n/', include('django.conf.urls.i18n')), # 国际化URL
|
|
|
]
|
|
|
|
|
|
# 添加国际化URL模式
|
|
|
urlpatterns += i18n_patterns(
|
|
|
re_path(r'^admin/', admin_site.urls), # 自定义管理员后台URL
|
|
|
re_path(r'', include('blog.urls', namespace='blog')), # 博客应用URL
|
|
|
re_path(r'mdeditor/', include('mdeditor.urls')), # Markdown编辑器URL
|
|
|
re_path(r'', include('comments.urls', namespace='comment')), # 评论应用URL
|
|
|
re_path(r'', include('accounts.urls', namespace='account')), # 账户应用URL
|
|
|
re_path(r'', include('oauth.urls', namespace='oauth')), # OAuth认证URL
|
|
|
re_path(r'^sitemap\.xml$', sitemap, {'sitemaps': sitemaps}, # 站点地图XML
|
|
|
name='django.contrib.sitemaps.views.sitemap'),
|
|
|
re_path(r'^feed/$', DjangoBlogFeed()), # RSS订阅源URL
|
|
|
re_path(r'^rss/$', DjangoBlogFeed()), # RSS订阅源别名
|
|
|
# 搜索URL,使用自定义的Elasticsearch视图和表单
|
|
|
re_path('^search', search_view_factory(view_class=EsSearchView, form_class=ElasticSearchModelSearchForm),
|
|
|
name='search'),
|
|
|
re_path(r'', include('servermanager.urls', namespace='servermanager')), # 服务器管理URL
|
|
|
re_path(r'', include('owntracks.urls', namespace='owntracks')), # OwnTracks位置跟踪URL
|
|
|
prefix_default_language=False # 不在默认语言的URL前添加语言前缀
|
|
|
) + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) # 静态文件服务
|
|
|
|
|
|
# 调试模式下启用媒体文件服务
|
|
|
if settings.DEBUG:
|
|
|
urlpatterns += static(settings.MEDIA_URL,
|
|
|
document_root=settings.MEDIA_ROOT) |