Flo*_*ent 5 python django uvicorn
我有一个 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
Run Code Online (Sandbox Code Playgroud)
Uvicorn 有一个选项,--root-path所以我尝试指定这些文件所在的目录,但仍然存在相同的错误(路径正确)。我该如何解决这个问题?
AKX*_*AKX 10
当不使用内置开发服务器运行时,您需要
使用经典的静态文件部署程序,该程序将所有静态文件收集到某个根目录中,并且期望静态文件服务器为它们提供服务。Uvicorn 似乎不支持静态文件服务,因此您可能还需要其他东西(参见例如https://www.uvicorn.org/deployment/#running-behind-nginx)。
(非常非常不受欢迎!)让 Django 像在 dev 中那样提供静态文件
将以下代码添加到您的settings.py 文件中
STATIC_ROOT = os.path.join(BASE_DIR, 'static', )
Run Code Online (Sandbox Code Playgroud)
在 urls.py 中添加以下代码
from django.conf.urls.static import static
from django.conf import settings
urlpatterns = [.
.....] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
Run Code Online (Sandbox Code Playgroud)
然后运行以下命令,但静态目录必须存在
python manage.py collectstatic --noinput
Run Code Online (Sandbox Code Playgroud)
启动服务器
uvicorn main.asgi:application --host 0.0.0.0
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2869 次 |
| 最近记录: |