管理django静态html文件中的相对URL

管理django静态html文件中的相对URL,django,django-templates,Django,Django Templates,我有一个静态目录,其中包含一堆html文件和图像。所有html文件都包含使用相对路径相互链接的链接。例如,描述算法的页面有一个链接,如。该目录中的所有内容在任何静态服务器中都以可移植的方式运行良好 我想使用django向这个目录下的每个html文件添加一个页面标题。使用包含横幅代码并包含使用“ssi”指令的静态htmls文件的模板是否可以实现这一点 我找不到解决方案的问题是静态HTML中的相对路径。当我在带有ssi的模板中包含静态html时,相对路径(例如html文件中的图像路径)变得完全错误。

我有一个静态目录,其中包含一堆html文件和图像。所有html文件都包含使用相对路径相互链接的链接。例如,描述算法的页面有一个链接,如
。该目录中的所有内容在任何静态服务器中都以可移植的方式运行良好

我想使用django向这个目录下的每个html文件添加一个页面标题。使用包含横幅代码并包含使用“ssi”指令的静态htmls文件的模板是否可以实现这一点

我找不到解决方案的问题是静态HTML中的相对路径。当我在带有ssi的模板中包含静态html时,相对路径(例如html文件中的图像路径)变得完全错误。例如,静态html中带有
的图像不再指向图像的正确地址


在django中是否有纠正此相对url问题的方法?

与web服务器相比,在静态环境中访问文件的区别在于目录根和web服务器根文件系统可能不同。您可以为此调整相对路径

此外,作为一个框架,django希望html模板驻留在
模板
中,无论是在您的应用程序中还是在
项目/模板/app/
级别。静态资产(如图像)应按所述进行管理。用户上传的媒体应按以下方式处理:

然后在模板中使用
{{STATIC\u URL}}
{{MEDIA\u URL}}
,只要合适


因此,在这种情况下,您的
。/../newmethod/algo2.html
应该位于通过
模板
目录中的“cd.././newmethod”从当前模板所在的目录访问的目录中,可以在中添加html
元素来更改所有链接所指的内容:

<base href="{% get_static_prefix %}{{ request.path }}"/>
然后,我的模板看起来是这样的(我使用的是夹层,所以这不是普遍适用的,但应该给出一个想法):

{%extends“base.html”%}
{%load i18n staticfiles%}
{%block meta_title%}{%trans“Home”}{%endblock%}
{%block title%}{%trans“Home”}{%endblock%}
{%block breadcrumb_menu%}
  • {%trans“Home”%%
  • {%endblock%} {%block body%} {%ssi STATIC_FILES_ROOT | add:request.path%} {%endblock%}
    PS
    STATIC\u FILES\u ROOT
    是我定义的自定义变量,因为我遇到了一个问题
    STATIC\u ROOT

    # Handle projects by serving static files in a frame; redirect indexes
    url("^projects/(?P<path>[^./]+)/$", RedirectView.as_view(url="/projects/%(path)s/index.html")),
    url("^projects/[^/]+/.*[.]html$", direct_to_template, {"template": "projects_frame.html", "extra_context": {"STATIC_FILES_ROOT": settings.STATIC_FILES_ROOT}}, name="projects"),
    url("^projects/(?P<path>[^/]+/.*[.].*)$", RedirectView.as_view(url="/static/projects/%(path)s")),
    
    {% extends "base.html" %}
    {% load i18n staticfiles %}
    
    {% block meta_title %}{% trans "Home" %}{% endblock %}
    {% block title %}{% trans "Home" %}{% endblock %}
    
    {% block breadcrumb_menu %}
    <li class="active">{% trans "Home" %}</li>
    {% endblock %}
    
    {% block body %}
    {% ssi STATIC_FILES_ROOT|add:request.path %}
    {% endblock %}