gauge.js - относительный URL не работает, но абсолютный URL работает в Django 1.10 - PullRequest
0 голосов
/ 28 августа 2018

Я экспериментировал с gauge.js и воспроизводил рабочий код «Использование», представленный в ссылке только при использовании абсолютного URL, но не при использовании относительного URL .

Я не нашел ничего похожего на Github Issue Tracker

Рабочий код

<canvas id="foo"></canvas>
<script>
    var opts = {
      lines: 12,
      angle: 0.15,
      lineWidth: 0.44,
      pointer: {
         length: 0.9,
         strokeWidth: 0.035,
         color: '#000000'
      },
      limitMax: 'false', 
      percentColors: [[0.0, "#a9d70b" ], [0.50, "#f9c802"], [1.0, "#ff0000"]], // !!!!
      strokeColor: '#E0E0E0',
      generateGradient: true
    };
    var target = document.getElementById('foo');
    var gauge = new Gauge(target).setOptions(opts);
    gauge.maxValue = 3000;
    gauge.animationSpeed = 32;
    gauge.set(2250);
</script>

<script src="https://bernii.github.io/gauge.js/dist/gauge.min.js"></script>

Выпуск

Если я заменю приведенный выше абсолютный URL-адрес относительным URL-адресом, индикатор исчезнет. Я скопировал код gauge.min.js из здесь и поместил файл в мою статическую папку. (Рабочий каталог дерева ниже)

<script src="../../static/lineoee/gauge.min.js"></script>

Приведенный выше относительный URL должен указывать на действительный каталог, однако я получаю:

(индекс): 224 Uncaught ReferenceError: Датчик не определен в var gauge = new Gauge(target).setOptions(opts);

Каталог рабочего дерева

    │   ├── static
│   │   └── lineoee
│   │       ├── gauge.min.js
│   ├── templates
│   │   ├── linedetails
│   │   │   ├── index.html
│   │   │   └── index.html.save
│   │   └── lineoee
│   │       ├── index.html     <-- I am linking gauge.min.js from here
│   │       ├── index.html.save

Urls.py

from django.conf.urls import url
from django.contrib import admin
from lineoee.views import index
from lineoee.views import details

urlpatterns = [
    url(r'lineoee/$', index, name='index'),
    url(r'linedetails/', details, name='details'),
]

Любые предложения о том, что я могу делать неправильно?

Примечание:

  • У меня есть определенные проблемы с производительностью, такие как ограниченный Интернет и быстрое время перезагрузки .
  • Приложение будет развернуто только на localhost .

EDIT

Согласно ответу ниже, используя ../static/lineoee/gauge.js, я получаю следующее сообщение на моей консоли python:

"GET /static/lineoee/gauge.min.js HTTP / 1.1" 304 0

1 Ответ

0 голосов
/ 28 августа 2018

Относительные URL-адреса не относительно расположения ваших шаблонов на диске, они относительно текущего URL-адреса. Так что если вы заходите на страницу по URL

http://localhost/lineoee/

относительный URL для ресурса Javascript будет

../static/lineoee/gauge.min.js

Возможно, поэтому рекомендуется использовать абсолютные URL-адреса для статических ресурсов, поскольку конфигурации URL-адресов всегда могут меняться. Я предлагаю вам использовать шаблонный тег static, который позаботится о следующих деталях:

{% load static %}
...
{% static 'lineoee/gauge.min.js' %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...