收集服务器上django项目中Swagger UI的静态

k97glaaz  于 2023-08-05  发布在  Go
关注(0)|答案(1)|浏览(131)

我在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

lsmepo6l

lsmepo6l1#

我认为可以通过以下方式之一进行修复:
1 -确保drf_yasg安装在您的服务器上,如果没有,您可以使用此命令安装它
pip install drf-yasg
2 -验证服务器上是否正确提供了静态文件。确保正确设置了Web服务器配置以提供静态文件。如果你使用的是Django的开发服务器(manage.py runserver),当DEBUG设置为True时,它会自动提供静态文件。然而,在生产环境中,您可能需要配置您的Web服务器(例如,Nginx我个人确实使用它)来提供静态文件。
您可以通过将此块添加到Nginx配置文件中来执行此操作:

location /static/ { 
        autoindex on; 
        autoindex_exact_size off; 
        alias /your_path/static/;
    }

字符串
3 -清除服务器上的静态文件缓存。有时,缓存文件可能会导致问题。您可以尝试在服务器上运行以下命令来清除该高速缓存:
python manage.py collectstatic --clear

相关问题