从目录托管 Django

问题描述 投票:0回答:1

我的目录结构是这样的:

C:\htdocs                                     # web root
   |_ django-container
      +- django-project
      |  +- core                              # startproject
      |  |_ myapp1                            # startapp
      +- public
         +- static                            # STATIC_ROOT, collectstatic
         |  +- css
         |  +- images
         |  |_ js
         |_ media                             # MEDIA_ROOT

Nginx 配置:

http {
  # ...
  upstream wsgi-server {
    server 127.0.0.1:8080;
  }
  server {
    # ...
    location /mysite/ {
      proxy_pass http://wsgi-server/;
    }
    location /mysite/public/media/ {
      alias C:/htdocs/django-container/public/media/;
      autoindex off;
    }
    location /mysite/public/static/ {
      alias C:/htdocs/django-container/public/static/;
      autoindex off;
    }
  }
}

我在端口 8000 上运行一个

waitress
WSGI 服务器作为服务,并运行
core.wsgi.application
。我的
settings.MEDIA_URL
settings.STATIC_URL
分别是
public/media/
public/static/

当我在应用程序中进行重定向或在模板中创建网址时,它没有

mysite
段,因此所有链接都会失败。甚至是
public/static/
public/media/
链接。对于最后 2 个,我可以将段添加到
settings.STATIC_URL
settings.MEDIA_URL
,但我想要一种通用的方法来在所有位置添加
mysite
段,如果可能的话最好是自动添加。

django
1个回答
0
投票

根据 Django 文档,只需在

FORCE_SCRIPT_NAME = '/mysite'
中设置
core.settings
。它一次性适用于所有重定向、URL、静态和媒体文件,不需要在 Django 中进行其他更改。

© www.soinside.com 2019 - 2024. All rights reserved.