倏瞬 2025-04-26 18:25 采纳率: 90%
浏览 12
已结题

用uvicorn启动django遇到的simpleui的问题

我已经安装了django-simpleui包,在用django自带的manage.py启动项目后,admin后台管理页面正常使用了simpleui的美化,可以正常使用。但是我用uvicorn启动django项目后,进入admin页面就出现问题,效果如下:

img

uvicorn启动的是asgi异步程序,怎么解决这个问题?还是本身uvicorn启动就不能用simpleui。
下面是终端给到的错误信息,显示的都是文件找不到:

img

  • 写回答

3条回答 默认 最新

  • 宝码香车 优质创作者: JavaScript技术领域 2025-04-26 18:32
    关注

    让【宝码香车】来帮你解答,本回答参考DeepSeek编写,并整理提供。
    如果还有疑问可以点击头像关注私信或评论。如果答案让您满意,请采纳、点赞、关注,非常感谢!

    解决 Uvicorn 启动 Django 时 SimpleUI 静态文件找不到的问题

    这个问题是因为 Uvicorn 作为 ASGI 服务器启动 Django 时,默认不会处理静态文件,而 SimpleUI 依赖的静态文件无法被正确加载。

    问题原因

    1. Uvicorn 是一个 ASGI 服务器,主要用于处理异步请求,不包含静态文件服务功能
    2. Django 的 runserver 命令会自动处理静态文件,但 Uvicorn 不会
    3. SimpleUI 的静态文件没有被正确收集或服务

    解决方案

    方案1:使用 WhiteNoise 中间件处理静态文件(推荐)

    1. 安装 WhiteNoise:

      pip install whitenoise
      
    2. 修改 settings.py
      ```python
      MIDDLEWARE = [

      添加在 SecurityMiddleware 之后,其他中间件之前

      'whitenoise.middleware.WhiteNoiseMiddleware',

      ...

      ]

    静态文件配置

    STATIC_URL = '/static/'
    STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
    STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'

    
    3. 收集静态文件:
    ```bash
    python manage.py collectstatic
    
    1. 使用 Uvicorn 启动:
      uvicorn your_project.asgi:application --reload
      

    方案2:使用 Django 的 runserver 和 Uvicorn 同时运行

    1. 在一个终端运行 Django 开发服务器处理静态文件:

      python manage.py runserver 8001
      
    2. 在另一个终端运行 Uvicorn 处理 ASGI 请求:

      uvicorn your_project.asgi:application --port 8000
      
    3. 配置 Nginx 或其他反向代理来路由请求

    方案3:使用 Daphne 作为 ASGI 服务器

    Daphne 是 Django 官方推荐的 ASGI 服务器,对 Django 生态支持更好:

    pip install daphne
    daphne your_project.asgi:application
    

    注意事项

    1. 确保你已经正确安装了 django-simpleui 并在 INSTALLED_APPS 中配置:

      INSTALLED_APPS = [
       'simpleui',
       'django.contrib.admin',
       # ...
      ]
      
    2. 生产环境中,建议使用 Nginx 或 Apache 来处理静态文件

    3. 如果问题仍然存在,可以尝试清除浏览器缓存或使用无痕模式访问

    希望这些解决方案能帮助你解决 Uvicorn 启动 Django 时 SimpleUI 静态文件加载的问题。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 5月4日
  • 已采纳回答 4月26日
  • 创建了问题 4月26日