<<<<<<< HEAD
<<<<<<< HEAD
<<<<<<< HEAD
"""djangoblog URL Configuration
项目URL路由总配置文件：定义所有URL与视图/应用的映射关系
核心作用是将用户访问的URL地址，分发到对应的应用或视图函数处理
"""
# 导入项目配置，用于获取静态资源、媒体文件路径等
from django.conf import settings
# 导入国际化URL配置工具，支持多语言URL前缀（如/en/、/zh-hans/）
from django.conf.urls.i18n import i18n_patterns
# 导入静态资源URL配置工具，用于开发环境下提供静态文件访问
from django.conf.urls.static import static
# 导入站点地图视图，用于生成sitemap.xml
from django.contrib.sitemaps.views import sitemap
# 导入URL路径配置工具（path用于固定路径，re_path支持正则匹配，include用于包含子应用URL）
from django.urls import path, include, re_path
# 导入Haystack搜索视图工厂，用于自定义搜索视图
from haystack.views import search_view_factory

# 导入自定义视图和配置：博客搜索视图、自定义Admin站点、ElasticSearch搜索表单
from blog.views import EsSearchView
from djangoblog.admin_site import admin_site
from djangoblog.elasticsearch_backend import ElasticSearchModelSearchForm
# 导入RSS订阅Feed和站点地图类
from djangoblog.feeds import DjangoBlogFeed
from djangoblog.sitemap import (ArticleSiteMap, CategorySiteMap,
                                StaticViewSitemap, TagSiteMap, UserSiteMap)


# -------------------------- 站点地图配置 --------------------------
# 定义站点地图字典：关联不同类型页面的Sitemap类，用于生成sitemap.xml
sitemaps = {
    'blog': ArticleSiteMap,    # 文章页面的站点地图
    'Category': CategorySiteMap,  # 分类页面的站点地图
    'Tag': TagSiteMap,         # 标签页面的站点地图
    'User': UserSiteMap,       # 用户主页的站点地图
    'static': StaticViewSitemap  # 静态页面（如首页）的站点地图
}


# -------------------------- 自定义错误页面配置 --------------------------
# 配置404（页面不存在）错误对应的处理视图
handler404 = 'blog.views.page_not_found_view'
# 配置500（服务器内部错误）错误对应的处理视图
handler500 = 'blog.views.server_error_view'
# 配置403（权限不足）错误对应的处理视图
handle403 = 'blog.views.permission_denied_view'


# -------------------------- 基础URL配置 --------------------------
# 非国际化URL列表：不随语言切换变化的URL
urlpatterns = [
    # 国际化切换入口：提供语言选择功能（如切换中英文）
    path('i18n/', include('django.conf.urls.i18n')),
]


# -------------------------- 国际化URL配置 --------------------------
# 国际化URL列表：会自动添加语言前缀（如/zh-hans/admin/、/en/admin/）
# prefix_default_language=False：默认语言（如中文）不添加语言前缀，保持URL简洁
urlpatterns += i18n_patterns(
    # 自定义Admin后台URL：使用项目自定义的admin_site（非Django默认Admin）
    re_path(r'^admin/', admin_site.urls),
    # 博客核心功能URL：包含文章列表、详情等，命名空间为'blog'
    re_path(r'', include('blog.urls', namespace='blog')),
    # Markdown编辑器URL：集成mdeditor插件的路由
    re_path(r'mdeditor/', include('mdeditor.urls')),
    # 评论功能URL：包含评论提交、列表等，命名空间为'comment'
    re_path(r'', include('comments.urls', namespace='comment')),
    # 用户账户功能URL：包含登录、注册、个人中心等，命名空间为'account'
    re_path(r'', include('accounts.urls', namespace='account')),
    # 第三方登录URL：包含GitHub、微信等登录，命名空间为'oauth'
    re_path(r'', include('oauth.urls', namespace='oauth')),
    # 站点地图URL：生成sitemap.xml，供搜索引擎抓取
    re_path(r'^sitemap\.xml$', sitemap, {'sitemaps': sitemaps},
            name='django.contrib.sitemaps.views.sitemap'),
    # RSS订阅URL：提供两种路径（/feed/和/rss/），均指向DjangoBlogFeed
    re_path(r'^feed/$', DjangoBlogFeed()),
    re_path(r'^rss/$', DjangoBlogFeed()),
    # 搜索功能URL：使用ElasticSearch搜索视图和表单，命名空间为'search'
    re_path('^search', search_view_factory(
        view_class=EsSearchView,
        form_class=ElasticSearchModelSearchForm
    ), name='search'),
    # 服务器管理功能URL：包含系统监控等，命名空间为'servermanager'
    re_path(r'', include('servermanager.urls', namespace='servermanager')),
    # 位置追踪功能URL：集成owntracks的路由，命名空间为'owntracks'
    re_path(r'', include('owntracks.urls', namespace='owntracks')),
    prefix_default_language=False  # 默认语言URL不添加语言前缀
)


# -------------------------- 静态资源与媒体文件URL配置 --------------------------
# 开发环境下：添加静态文件URL映射（生产环境由Nginx/Apache处理）
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

# DEBUG模式下（开发环境）：添加媒体文件（用户上传文件）的URL映射
if settings.DEBUG:
    urlpatterns += static(settings.MEDIA_URL,
                          document_root=settings.MEDIA_ROOT)
=======
from django.urls import path
from django.urls import re_path

from . import views
from .forms import LoginForm

app_name = "accounts"

urlpatterns = [re_path(r'^login/$',
                       views.LoginView.as_view(success_url='/'),
                       name='login',
                       kwargs={'authentication_form': LoginForm}),
               re_path(r'^register/$',
                       views.RegisterView.as_view(success_url="/"),
                       name='register'),
               re_path(r'^logout/$',
                       views.LogoutView.as_view(),
                       name='logout'),
               path(r'account/result.html',
                    views.account_result,
                    name='result'),
               re_path(r'^forget_password/$',
                       views.ForgetPasswordView.as_view(),
                       name='forget_password'),
               re_path(r'^forget_password_code/$',
                       views.ForgetPasswordEmailCode.as_view(),
                       name='forget_password_code'),
               ]
>>>>>>> sh_branch
=======

from django.urls import path

# 导入当前应用（comments）的views模块，用于关联视图函数/类
from . import views

# 定义当前应用的命名空间为"comments"，避免URL名称冲突
app_name = "comments"

# 定义URL路由列表，存储URL规则与视图的映射关系
urlpatterns = [

    path(
        'article/<int:article_id>/postcomment',  # URL路径：包含文章ID（整数类型）的动态路径
        views.CommentPostView.as_view(),  # 关联的视图类：调用CommentPostView的as_view()方法生成视图函数
        name='postcomment'),  # 给该URL命名为"postcomment"，用于反向解析
]
>>>>>>> zh_branch
=======
from django.urls import path
from django.views.decorators.cache import cache_page

from . import views

# 应用命名空间，用于URL反向解析时区分不同应用的URL
app_name = "blog"

# URL模式配置，定义了博客应用的所有URL路由
urlpatterns = [
    # 首页路由
    path(
        r'',  # 空路径，匹配根URL（如：/ 或 /blog/）
        views.IndexView.as_view(),  # 使用类视图处理首页
        name='index'  # URL名称，用于反向解析
    ),

    # 首页分页路由
    path(
        r'page/<int:page>/',  # 带页码的路径（如：/page/2/）
        views.IndexView.as_view(),  # 使用相同的类视图，但会处理分页
        name='index_page'  # URL名称
    ),

    # 文章详情页路由（SEO友好URL）
    path(
        r'article/<int:year>/<int:month>/<int:day>/<int:article_id>.html',  # 包含年月日和文章ID的URL
        views.ArticleDetailView.as_view(),  # 文章详情类视图
        name='detailbyid'  # URL名称
    ),

    # 分类详情页路由
    path(
        r'category/<slug:category_name>.html',  # 使用分类名称的slug格式
        views.CategoryDetailView.as_view(),  # 分类详情类视图
        name='category_detail'  # URL名称
    ),

    # 分类详情分页路由
    path(
        r'category/<slug:category_name>/<int:page>.html',  # 带页码的分类URL
        views.CategoryDetailView.as_view(),  # 相同的类视图处理分页
        name='category_detail_page'  # URL名称
    ),

    # 作者详情页路由
    path(
        r'author/<author_name>.html',  # 使用作者名称的URL
        views.AuthorDetailView.as_view(),  # 作者详情类视图
        name='author_detail'  # URL名称
    ),

    # 作者详情分页路由
    path(
        r'author/<author_name>/<int:page>.html',  # 带页码的作者URL
        views.AuthorDetailView.as_view(),  # 相同的类视图处理分页
        name='author_detail_page'  # URL名称
    ),

    # 标签详情页路由
    path(
        r'tag/<slug:tag_name>.html',  # 使用标签名称的slug格式
        views.TagDetailView.as_view(),  # 标签详情类视图
        name='tag_detail'  # URL名称
    ),

    # 标签详情分页路由
    path(
        r'tag/<slug:tag_name>/<int:page>.html',  # 带页码的标签URL
        views.TagDetailView.as_view(),  # 相同的类视图处理分页
        name='tag_detail_page'  # URL名称
    ),

    # 文章归档页路由（带缓存）
    path(
        'archives.html',  # 归档页面URL
        cache_page(60 * 60)(views.ArchivesView.as_view()),  # 使用缓存装饰器，缓存1小时
        name='archives'  # URL名称
    ),

    # 友情链接页面路由
    path(
        'links.html',  # 友情链接页面URL
        views.LinkListView.as_view(),  # 链接列表类视图
        name='links'  # URL名称
    ),

    # 文件上传路由
    path(
        r'upload',  # 文件上传端点
        views.fileupload,  # 使用函数视图处理文件上传
        name='upload'  # URL名称
    ),

    # 缓存清理路由
    path(
        r'clean',  # 缓存清理端点
        views.clean_cache_view,  # 使用函数视图处理缓存清理
        name='clean'  # URL名称
    ),
]
>>>>>>> hyt_branch
