【问题标题】:How to run Django with Uvicorn webserver?如何使用 Uvicorn 网络服务器运行 Django?
【发布时间】:2020-05-13 09:08:10
【问题描述】:

我有一个 Django 项目在我的本地机器上使用开发服务器 manage.py runserver 运行,我正在尝试使用 Uvicorn 运行它,然后再将它部署到虚拟机中。因此,在我的虚拟环境中,我安装了uvicorn 并启动了服务器,但正如您在下面看到的,它无法找到 Django 静态 css 文件。

(envdev) user@lenovo:~/python/myproject$ uvicorn myproject.asgi:application --port 8001
Started server process [17426]

Waiting for application startup.
ASGI 'lifespan' protocol appears unsupported.
Application startup complete.
Uvicorn running on http://127.0.0.1:8001 (Press CTRL+C to quit)

INFO:     127.0.0.1:45720 - "GET /admin/ HTTP/1.1" 200 OK
Not Found: /static/admin/css/base.css
Not Found: /static/admin/css/base.css
INFO:     127.0.0.1:45720 - "GET /static/admin/css/base.css HTTP/1.1" 404 Not Found
Not Found: /static/admin/css/dashboard.css
Not Found: /static/admin/css/dashboard.css
INFO:     127.0.0.1:45724 - "GET /static/admin/css/dashboard.css HTTP/1.1" 404 Not Found
Not Found: /static/admin/css/responsive.css
Not Found: /static/admin/css/responsive.css
INFO:     127.0.0.1:45726 - "GET /static/admin/css/responsive.css HTTP/1.1" 404 Not Found

Uvicorn 有一个选项--root-path 所以我尝试指定这些文件所在的目录但是仍然有同样的错误(路径是正确的)。我该如何解决这个问题?

【问题讨论】:

    标签: python django uvicorn


    【解决方案1】:

    当不使用内置开发服务器运行时,您需要

    【讨论】:

    • 感谢您的推荐!每天学习新事物)
    • 令人讨厌的是,whitenoise 似乎并没有暗示它可以与 asgi 一起使用(在几个地方它提到它“与 wsgi 一起工作”),这意味着我花了很长时间才意识到它可以工作使用 Django 运行 asgi
    【解决方案2】:

    在您的 settings.py 文件中添加以下代码

    STATIC_ROOT = os.path.join(BASE_DIR, 'static', )
    

    在您的 urls.py 中添加以下代码

    from django.conf.urls.static import static
    from django.conf import settings
    
    urlpatterns = [.
    .....] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
    

    然后运行下面的命令,但静态目录必须存在

    python manage.py collectstatic --noinput
    

    启动服务器

    uvicorn main.asgi:application --host 0.0.0.0
    

    【讨论】:

      猜你喜欢
      • 2017-04-11
      • 1970-01-01
      • 2023-03-07
      • 2011-07-12
      • 2017-07-07
      • 1970-01-01
      • 2011-01-10
      • 2011-02-01
      • 1970-01-01
      相关资源
      最近更新 更多