135 lines
4.9 KiB
Python
135 lines
4.9 KiB
Python
"""backend URL Configuration
|
||
|
||
The `urlpatterns` list routes URLs to views. For more information please see:
|
||
https://docs.djangoproject.com/en/3.2/topics/http/urls/
|
||
Examples:
|
||
Function views
|
||
1. Add an import: from my_app import views
|
||
2. Add a URL to urlpatterns: path('', views.home, name='home')
|
||
Class-based views
|
||
1. Add an import: from other_app.views import Home
|
||
2. Add a URL to urlpatterns: path('', Home.as_view(), name='home')
|
||
Including another URLconf
|
||
1. Import the include() function: from django.urls import include, path
|
||
2. Add a URL to urlpatterns: path('blog/', include('blog.urls'))
|
||
"""
|
||
from django.conf.urls.static import static
|
||
from django.urls import path, include, re_path
|
||
from drf_yasg import openapi
|
||
from drf_yasg.views import get_schema_view
|
||
from rest_framework import permissions
|
||
from rest_framework_simplejwt.views import (
|
||
TokenRefreshView,
|
||
)
|
||
|
||
from application import dispatch
|
||
from application import settings
|
||
from application.sse_views import sse_view
|
||
from dvadmin.system.views.dictionary import InitDictionaryViewSet
|
||
from dvadmin.system.views.login import (
|
||
LoginView,
|
||
CaptchaView,
|
||
ApiLogin,
|
||
LogoutView,
|
||
LoginTokenView
|
||
)
|
||
from dvadmin.system.views.system_config import InitSettingsViewSet
|
||
from dvadmin.utils.swagger import CustomOpenAPISchemaGenerator
|
||
|
||
# =========== 初始化系统配置 =================
|
||
dispatch.init_system_config()
|
||
dispatch.init_dictionary()
|
||
# =========== 初始化系统配置 =================
|
||
|
||
permission_classes = [permissions.AllowAny, ] if settings.DEBUG else [permissions.IsAuthenticated, ]
|
||
schema_view = get_schema_view(
|
||
openapi.Info(
|
||
title="Snippets API",
|
||
default_version="v1",
|
||
description="Test description",
|
||
terms_of_service="https://www.google.com/policies/terms/",
|
||
contact=openapi.Contact(email="contact@snippets.local"),
|
||
license=openapi.License(name="BSD License"),
|
||
),
|
||
public=True,
|
||
permission_classes=permission_classes,
|
||
generator_class=CustomOpenAPISchemaGenerator,
|
||
)
|
||
# 前端页面映射
|
||
from django.http import Http404, HttpResponse
|
||
from django.shortcuts import render
|
||
import mimetypes
|
||
import os
|
||
|
||
|
||
def web_view(request):
|
||
return render(request, 'web/index.html')
|
||
|
||
|
||
def serve_web_files(request, filename):
|
||
# 设定文件路径
|
||
filepath = os.path.join(settings.BASE_DIR, 'templates', 'web', filename)
|
||
|
||
# 检查文件是否存在
|
||
if not os.path.exists(filepath):
|
||
raise Http404("File does not exist")
|
||
|
||
# 根据文件扩展名,确定 MIME 类型
|
||
mime_type, _ = mimetypes.guess_type(filepath)
|
||
|
||
# 打开文件并读取内容
|
||
with open(filepath, 'rb') as f:
|
||
response = HttpResponse(f.read(), content_type=mime_type)
|
||
return response
|
||
|
||
|
||
urlpatterns = (
|
||
[
|
||
re_path(
|
||
r"^swagger(?P<format>\.json|\.yaml)$",
|
||
schema_view.without_ui(cache_timeout=0),
|
||
name="schema-json",
|
||
),
|
||
path(
|
||
"",
|
||
schema_view.with_ui("swagger", cache_timeout=0),
|
||
name="schema-swagger-ui",
|
||
),
|
||
path(
|
||
r"redoc/",
|
||
schema_view.with_ui("redoc", cache_timeout=0),
|
||
name="schema-redoc",
|
||
),
|
||
path("api/system/", include("dvadmin.system.urls")),
|
||
path("api/login/", LoginView.as_view(), name="token_obtain_pair"),
|
||
path("api/logout/", LogoutView.as_view(), name="token_obtain_pair"),
|
||
path("token/refresh/", TokenRefreshView.as_view(), name="token_refresh"),
|
||
re_path(
|
||
r"^api-auth/", include("rest_framework.urls", namespace="rest_framework")
|
||
),
|
||
path("api/captcha/", CaptchaView.as_view()),
|
||
path("api/init/dictionary/", InitDictionaryViewSet.as_view()),
|
||
path("api/init/settings/", InitSettingsViewSet.as_view()),
|
||
path("apiLogin/", ApiLogin.as_view()),
|
||
|
||
# 仅用于开发,上线需关闭
|
||
path("api/token/", LoginTokenView.as_view()),
|
||
# 前端页面映射
|
||
path('web/', web_view, name='web_view'),
|
||
path('web/<path:filename>', serve_web_files, name='serve_web_files'),
|
||
# sse
|
||
path('sse/', sse_view, name='sse'),
|
||
]
|
||
+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
|
||
+ static(settings.STATIC_URL, document_root=settings.STATICFILES_DIRS[0] if settings.STATICFILES_DIRS else None)
|
||
+ [re_path(ele.get('re_path'), include(ele.get('include'))) for ele in settings.PLUGINS_URL_PATTERNS]
|
||
)
|
||
|
||
#就是添加如下内容,把自己的路由单独写出来,这样方便与dvadmin3的官方路由作区分
|
||
My_Urls = (
|
||
[ #这里的crud_book是指django创建的应用名称crud_book
|
||
path('',include('crud_book.urls')),]
|
||
)
|
||
|
||
# 这里把自己的路径单独出来,后面再追加在一起
|
||
urlpatterns += My_Urls |