我在Django项目上为一个特定的端点设置了一个Swagger配置
它在我的本地机器上完全完成,但当我在服务器上发送它时,似乎无法收集drf_yasg的静态文件,并显示没有任何404未找到错误的空白页面,但在控制台上它写的Js和CSS文件也是404未找到
swagger.py
from drf_yasg import openapi
from drf_yasg.views import get_schema_view
from django.urls import path
from requests_app.views import RequestsVS
from rest_framework import permissions
single_endpoint_schema_view = get_schema_view(
openapi.Info(
title="/api/",
default_version='v1',
description="برای احراز هویت نیاز است تا کلید دریافتی در هدر درخواست ها با عنوان زیر ارسال شود",
),
public=True,
permission_classes=[permissions.AllowAny],
patterns=[path('requests/add/outside/', RequestsVS.as_view({'post': 'create_from_outside'}))],
)
swagger_urlpatterns = [
path('swagger/', single_endpoint_schema_view.with_ui('swagger', cache_timeout=0),
name='schema-swagger-ui'),
path('redoc/', single_endpoint_schema_view.with_ui('redoc', cache_timeout=0),
name='schema-redoc'),
]
urlpatterns = swagger_urlpatterns + [
]
字符串
settings.py
STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static'),
]
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'
# Default primary key field type
# https://docs.djangoproject.com/en/4.1/ref/settings/#default-auto-field
DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
AUTH_USER_MODEL = 'users.User'
# Swagger settings
SWAGGER_SETTINGS = {
'USE_SESSION_AUTH': False, # Set this to True if you're using session authentication
'SECURITY_DEFINITIONS': {
'Bearer': {
'type': 'apiKey',
'name': 'Authorization',
'in': 'header',
},
},
}
型
urls.py
urlpatterns = [
path('admin/', admin.site.urls),
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
urlpatterns += swagger_urlpatterns
型
1条答案
按热度按时间lsmepo6l1#
我认为可以通过以下方式之一进行修复:
1 -确保
drf_yasg
安装在您的服务器上,如果没有,您可以使用此命令安装它pip install drf-yasg
2 -验证服务器上是否正确提供了静态文件。确保正确设置了Web服务器配置以提供静态文件。如果你使用的是Django的开发服务器(manage.py runserver),当
DEBUG
设置为True
时,它会自动提供静态文件。然而,在生产环境中,您可能需要配置您的Web服务器(例如,Nginx
我个人确实使用它)来提供静态文件。您可以通过将此块添加到
Nginx
配置文件中来执行此操作:字符串
3 -清除服务器上的静态文件缓存。有时,缓存文件可能会导致问题。您可以尝试在服务器上运行以下命令来清除该高速缓存:
python manage.py collectstatic --clear