在Django

时间:2018-10-18 17:35:30

标签: django

使用“发送脉冲”时,它们会指示您将javascript放在模板的开头。然后,此javascript引用另外2个脚本,它们指示您将其放置在网站的根目录中。可以在哪里放置这些内容,以便其javascript自动在“网络根目录”中找到它们?

2 个答案:

答案 0 :(得分:0)

重点是该服务希望直接在/下找到脚本,例如mywebsite.com/script1.js。但是在Django中,静态文件通常位于/static下或等效文件下。您无法在任何地方“放置”它们以使它们出现在正确的URL。

但这并不意味着您不能这样做。最好的办法是在Web服务器(nginx或Apache)中为这些脚本添加显式映射。例如,在nginx中:

location /script1.js { alias /path/to/staticdir/script1.js; }

答案 1 :(得分:0)

您有许多可能的选择。没有特别的顺序:

这看起来像:

# urls.py - assuming >= Django 2.0
from django.urls import path

urlpatterns = [
    # place script1.js into your static folder, then reference its location within the static folder
    path('script1.js', views.javascript_loader, {'script_path': 'script1.js'}),
]

# views.py
from django.http import HttpResponse
from django.conf import settings
import os

def javascript_loader(request, script_path):
    # note: you should cache this content for the use case you've described, just 
    # consider this an illustration of how to load/return content from a static 
    # file using a view. 
    full_script_path = os.path.join(settings.STATIC_ROOT, script_path)

    with open(full_script_path, 'r') as f:
        javascript_contents = f.read()

    return HttpResponse(javascript_contents, mimetype="text/javascript")

同样,不确定哪种解决方案最适合您的需求,但是其中的 应该会为您提供所需的结果。