diff --git a/src/DjangoBlog-master/DjangoBlog-master/djangoblog/urls.py b/src/DjangoBlog-master/DjangoBlog-master/djangoblog/urls.py index 4aae58a..f387d67 100644 --- a/src/DjangoBlog-master/DjangoBlog-master/djangoblog/urls.py +++ b/src/DjangoBlog-master/DjangoBlog-master/djangoblog/urls.py @@ -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) \ No newline at end of file