|
|
|
|
@ -1,64 +1,106 @@
|
|
|
|
|
"""djangoblog URL Configuration
|
|
|
|
|
"""
|
|
|
|
|
djangoblog URL Configuration
|
|
|
|
|
|
|
|
|
|
URL配置是Django网站的目录,本质是URL与视图函数之间的映射表。
|
|
|
|
|
通过此文件告诉Django,对于哪个URL调用哪段代码。
|
|
|
|
|
|
|
|
|
|
The `urlpatterns` list routes URLs to views. For more information please see:
|
|
|
|
|
配置说明文档:
|
|
|
|
|
https://docs.djangoproject.com/en/1.10/topics/http/urls/
|
|
|
|
|
Examples:
|
|
|
|
|
Function views
|
|
|
|
|
1. Add an import: from my_app import views
|
|
|
|
|
2. Add a URL to urlpatterns: url(r'^$', views.home, name='home')
|
|
|
|
|
Class-based views
|
|
|
|
|
1. Add an import: from other_app.views import Home
|
|
|
|
|
2. Add a URL to urlpatterns: url(r'^$', Home.as_view(), name='home')
|
|
|
|
|
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'))
|
|
|
|
|
|
|
|
|
|
示例:
|
|
|
|
|
函数视图:
|
|
|
|
|
1. 导入视图:from my_app import views
|
|
|
|
|
2. 添加URL模式:url(r'^$', views.home, name='home')
|
|
|
|
|
|
|
|
|
|
基于类的视图:
|
|
|
|
|
1. 导入视图:from other_app.views import Home
|
|
|
|
|
2. 添加URL模式:url(r'^$', Home.as_view(), name='home')
|
|
|
|
|
|
|
|
|
|
包含其他URL配置:
|
|
|
|
|
1. 导入include函数:from django.conf.urls import url, include
|
|
|
|
|
2. 添加URL模式:url(r'^blog/', include('blog.urls'))
|
|
|
|
|
"""
|
|
|
|
|
from django.conf import settings
|
|
|
|
|
from django.conf.urls.i18n import i18n_patterns
|
|
|
|
|
from django.conf.urls.static import static
|
|
|
|
|
from django.contrib.sitemaps.views import sitemap
|
|
|
|
|
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
|
|
|
|
|
from django.urls import re_path # 正则表达式URL匹配
|
|
|
|
|
from haystack.views import search_view_factory # Haystack搜索视图工厂
|
|
|
|
|
|
|
|
|
|
# 导入自定义模块
|
|
|
|
|
from blog.views import EsSearchView
|
|
|
|
|
from djangoblog.admin_site import admin_site
|
|
|
|
|
from djangoblog.admin_site import admin_site # 自定义admin站点
|
|
|
|
|
from djangoblog.elasticsearch_backend import ElasticSearchModelSearchForm
|
|
|
|
|
from djangoblog.feeds import DjangoBlogFeed
|
|
|
|
|
from djangoblog.feeds import DjangoBlogFeed # RSS订阅源
|
|
|
|
|
from djangoblog.sitemap import ArticleSiteMap, CategorySiteMap, StaticViewSitemap, TagSiteMap, UserSiteMap
|
|
|
|
|
|
|
|
|
|
# 站点地图配置字典,定义不同类型的站点地图[1,3](@ref)
|
|
|
|
|
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'
|
|
|
|
|
# 自定义错误处理视图[2](@ref)
|
|
|
|
|
handler404 = 'blog.views.page_not_found_view' # 404页面未找到处理
|
|
|
|
|
handler500 = 'blog.views.server_error_view' # 500服务器错误处理
|
|
|
|
|
handle403 = 'blog.views.permission_denied_view' # 403权限拒绝处理
|
|
|
|
|
|
|
|
|
|
# 基础URL模式配置
|
|
|
|
|
urlpatterns = [
|
|
|
|
|
# 国际化URL支持,提供语言切换功能[7,8](@ref)
|
|
|
|
|
path('i18n/', include('django.conf.urls.i18n')),
|
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
# 使用i18n_patterns为URL添加语言前缀支持国际化[6,7](@ref)
|
|
|
|
|
urlpatterns += i18n_patterns(
|
|
|
|
|
# 管理员后台URL,使用自定义的admin_site[4](@ref)
|
|
|
|
|
re_path(r'^admin/', admin_site.urls),
|
|
|
|
|
|
|
|
|
|
# 博客应用URL,包含博客相关所有路由[1,4](@ref)
|
|
|
|
|
re_path(r'', include('blog.urls', namespace='blog')),
|
|
|
|
|
|
|
|
|
|
# Markdown编辑器URL[4](@ref)
|
|
|
|
|
re_path(r'mdeditor/', include('mdeditor.urls')),
|
|
|
|
|
|
|
|
|
|
# 评论系统URL[4](@ref)
|
|
|
|
|
re_path(r'', include('comments.urls', namespace='comment')),
|
|
|
|
|
|
|
|
|
|
# 用户账户URL[4](@ref)
|
|
|
|
|
re_path(r'', include('accounts.urls', namespace='account')),
|
|
|
|
|
|
|
|
|
|
# OAuth认证URL[4](@ref)
|
|
|
|
|
re_path(r'', include('oauth.urls', namespace='oauth')),
|
|
|
|
|
|
|
|
|
|
# 站点地图XML文件URL[1](@ref)
|
|
|
|
|
re_path(r'^sitemap\.xml$', sitemap, {'sitemaps': sitemaps},
|
|
|
|
|
name='django.contrib.sitemaps.views.sitemap'),
|
|
|
|
|
|
|
|
|
|
# RSS订阅源URL(feed和rss两个端点)[1](@ref)
|
|
|
|
|
re_path(r'^feed/$', DjangoBlogFeed()),
|
|
|
|
|
re_path(r'^rss/$', DjangoBlogFeed()),
|
|
|
|
|
|
|
|
|
|
# 搜索功能URL,使用ElasticSearch作为后端[4](@ref)
|
|
|
|
|
re_path('^search', search_view_factory(view_class=EsSearchView, form_class=ElasticSearchModelSearchForm),
|
|
|
|
|
name='search'),
|
|
|
|
|
|
|
|
|
|
# 服务器管理URL[4](@ref)
|
|
|
|
|
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)
|
|
|
|
|
|
|
|
|
|
# OwnTracks位置跟踪URL[4](@ref)
|
|
|
|
|
re_path(r'', include('owntracks.urls', namespace='owntracks')),
|
|
|
|
|
|
|
|
|
|
# 不强制为默认语言添加前缀[6,7](@ref)
|
|
|
|
|
prefix_default_language=False
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
# 静态文件服务配置(开发环境)[2](@ref)
|
|
|
|
|
+ static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
|
|
|
|
|
|
|
|
|
|
# 开发环境下媒体文件服务配置[2](@ref)
|
|
|
|
|
if settings.DEBUG:
|
|
|
|
|
urlpatterns += static(settings.MEDIA_URL,
|
|
|
|
|
document_root=settings.MEDIA_ROOT)
|
|
|
|
|
document_root=settings.MEDIA_ROOT)
|