|
|
|
|
@ -24,55 +24,66 @@ from django.http import JsonResponse
|
|
|
|
|
import time
|
|
|
|
|
|
|
|
|
|
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 djangoblog.admin_site import admin_site # 自定义的admin站点
|
|
|
|
|
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
|
|
|
|
|
'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'
|
|
|
|
|
#姜雨菲: 自定义错误页面处理视图
|
|
|
|
|
handler404 = 'blog.views.page_not_found_view' # 404页面未找到
|
|
|
|
|
handler500 = 'blog.views.server_error_view' # 500服务器错误
|
|
|
|
|
handle403 = 'blog.views.permission_denied_view' # 403权限拒绝
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def health_check(request):
|
|
|
|
|
"""
|
|
|
|
|
健康检查接口
|
|
|
|
|
简单返回服务健康状态
|
|
|
|
|
用于监控服务是否正常运行,简单返回服务健康状态和时间戳
|
|
|
|
|
"""
|
|
|
|
|
return JsonResponse({
|
|
|
|
|
'status': 'healthy',
|
|
|
|
|
'timestamp': time.time()
|
|
|
|
|
'status': 'healthy', # 健康状态标识
|
|
|
|
|
'timestamp': time.time() # 当前时间戳
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
# 基础URL配置(不包含国际化前缀)
|
|
|
|
|
urlpatterns = [
|
|
|
|
|
path('i18n/', include('django.conf.urls.i18n')),
|
|
|
|
|
path('health/', health_check, name='health_check'),
|
|
|
|
|
path('i18n/', include('django.conf.urls.i18n')), # 国际化配置入口
|
|
|
|
|
path('health/', health_check, name='health_check'), # 健康检查接口
|
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
# 包含国际化前缀的URL配置(会自动添加语言代码前缀,如/en/、/zh-hans/)
|
|
|
|
|
urlpatterns += i18n_patterns(
|
|
|
|
|
re_path(r'^admin/', admin_site.urls),
|
|
|
|
|
re_path(r'', include('blog.urls', namespace='blog')),
|
|
|
|
|
re_path(r'mdeditor/', include('mdeditor.urls')),
|
|
|
|
|
re_path(r'', include('comments.urls', namespace='comment')),
|
|
|
|
|
re_path(r'', include('accounts.urls', namespace='account')),
|
|
|
|
|
re_path(r'', include('oauth.urls', namespace='oauth')),
|
|
|
|
|
re_path(r'^admin/', admin_site.urls), # 自定义admin后台URL
|
|
|
|
|
re_path(r'', include('blog.urls', namespace='blog')), # 博客应用URL,命名空间blog
|
|
|
|
|
re_path(r'mdeditor/', include('mdeditor.urls')), # Markdown编辑器URL
|
|
|
|
|
re_path(r'', include('comments.urls', namespace='comment')), # 评论应用URL,命名空间comment
|
|
|
|
|
re_path(r'', include('accounts.urls', namespace='account')), # 账户应用URL,命名空间account
|
|
|
|
|
re_path(r'', include('oauth.urls', namespace='oauth')), # 第三方登录应用URL,命名空间oauth
|
|
|
|
|
# 站点地图XML
|
|
|
|
|
re_path(r'^sitemap\.xml$', sitemap, {'sitemaps': sitemaps},
|
|
|
|
|
name='django.contrib.sitemaps.views.sitemap'),
|
|
|
|
|
re_path(r'^feed/$', DjangoBlogFeed()),
|
|
|
|
|
re_path(r'^rss/$', DjangoBlogFeed()),
|
|
|
|
|
re_path(r'^feed/$', DjangoBlogFeed()), # RSS订阅源URL
|
|
|
|
|
re_path(r'^rss/$', DjangoBlogFeed()), # 另一个RSS订阅源URL(与feed功能相同)
|
|
|
|
|
# 搜索功能URL,使用自定义的EsSearchView和搜索表单
|
|
|
|
|
re_path('^search', search_view_factory(view_class=EsSearchView, form_class=ElasticSearchModelSearchForm),
|
|
|
|
|
name='search'),
|
|
|
|
|
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)
|
|
|
|
|
re_path(r'', include('servermanager.urls', namespace='servermanager')), # 服务器管理应用URL
|
|
|
|
|
re_path(r'', include('owntracks.urls', namespace='owntracks')), # 位置追踪应用URL
|
|
|
|
|
prefix_default_language=False # 不为主语言添加前缀
|
|
|
|
|
) + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) # 静态文件URL配置
|
|
|
|
|
|
|
|
|
|
# 开发环境下添加媒体文件(用户上传文件)的URL配置
|
|
|
|
|
if settings.DEBUG:
|
|
|
|
|
urlpatterns += static(settings.MEDIA_URL,
|
|
|
|
|
document_root=settings.MEDIA_ROOT)
|
|
|
|
|
document_root=settings.MEDIA_ROOT)
|