我的目录结构是这样的:
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 文档,只需在
FORCE_SCRIPT_NAME = '/mysite'
中设置 core.settings
。它一次性适用于所有重定向、URL、静态和媒体文件,不需要在 Django 中进行其他更改。