Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 使静态根依赖于域_Django_Nginx_Django Staticfiles - Fatal编程技术网

Django 使静态根依赖于域

Django 使静态根依赖于域,django,nginx,django-staticfiles,Django,Nginx,Django Staticfiles,在我的Django应用程序中,我将staticfiles应用程序与 我的web服务器可以通过两个域访问,我希望为每个域提供不同的静态文件 我的想法是www.My\u domain.com/static/将提供os.path.join(BASE\u DIR,“staticfiles/My\u domain/”)中的文件,反之亦然 实现这一目标的最佳方式是什么?我想到了三种解决办法: 子类化访问STATIC\u ROOT的位置,以便将域考虑在内 使用nginx将www.my\u domain.com

在我的Django应用程序中,我将staticfiles应用程序与

我的web服务器可以通过两个域访问,我希望为每个域提供不同的静态文件

我的想法是www.My\u domain.com/static/将提供
os.path.join(BASE\u DIR,“staticfiles/My\u domain/”)
中的文件,反之亦然

实现这一目标的最佳方式是什么?我想到了三种解决办法:

  • 子类化访问
    STATIC\u ROOT
    的位置,以便将域考虑在内
  • 使用nginx将www.my\u domain.com/static/my\u domain/路由到www.my\u domain.com/static/
  • 使用Django中间件实现与2相同的结果。(像)

  • 谢谢大家!

    我建议使用您问题中的第三个选项。我想说的是,与其为每个站点创建不同的静态根目录,不如保持静态根目录不变,并根据您的域创建两个包含静态文件的文件夹。例如:

    -- STATIC_ROOT
     | -- domain_a
      | -- js
      | -- css
      | -- img
     | -- domain_b
      | -- js
      | -- css
      | -- img
    
    添加一个中间件,您可以在其中将域路径附加到请求:

    在模板中,按如下方式使用:

    {% static request.domain|add:'/js/something.js' %}
    

    “我不认为django代码与这个案例有任何关系-这完全是nginx相关的问题,@IvanStarostin,但也可以用django代码来做,不是吗?”?目前我在Heroku上运行,没有能力配置它,因此我必须另外部署另一个nginx。如果在Django有一个简单的方法,它会让我的生活更轻松。
    {% static request.domain|add:'/js/something.js' %}