Как избавиться от кода «% 20» в URL (django) - PullRequest
3 голосов
/ 10 февраля 2012

Я работаю с django 1.3 и занимаюсь наследованием некоторых шаблонов.Кажется, у моего /static/ пути настройки есть проблемы, когда я покидаю домашнюю страницу.Проблема в том, что когда я загружаю home.html, который наследуется от base.html, ссылки CSS и изображения работают нормально.Но как только я перехожу на дополнительный URL (в данном случае vehicle.html), css и изображение теряются с ошибкой ниже:

ошибка консоли

"GET /static/%20/static/images/logo_2.jpg HTTP/1.1" 404 1771
"GET /static/%20/static/css/default.css HTTP/1.1" 404 1765

просмотр исходной страницы

<link rel="stylesheet" type="text/css" href="/static/ /static/css/default.css">
<link rel="stylesheet" type="text/css" href="/static/ /static/css/default.css">

Похоже, что откуда-то появляется пространство.Кроме того, из файла vehilce.html источник страницы показывает, что добавление дополнительного /static/ к URL-адресу освобождает пространство.Где я могу пойти не так?Ниже приведены мои документы:

settings.py

STATIC_ROOT = 'D:/dev/workspace/vehicle_request/vehicle_request/mvmanager/static/'
STATIC_URL = '/static/'

urls.py

urlpatterns = patterns('',
                   url(r'^$', home_page),
                   (r'^admin/', include(admin.site.urls)),
                   (r'^media/(?P<path>.*)$', 'django.views.static.serve',{'document_root': settings.MEDIA_ROOT}), #Not in use in my code yet
                   (r'^static/(?P<path>.*)$', 'django.views.static.serve',{'document_root': settings.STATIC_ROOT}),
                   (r'^vehicle/', vehicle),
                   (r'^driver/', driver),

base.html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html lang="en">
<head>
<link rel="stylesheet" type="text/css" href="{{STATIC_URL}}/static/css/default.css">
<title>{% block title %}{% endblock %}</title>
</head>
<body>
<header>
<a href="http://localhost:8000" title="Home Page">
<img alt="logo2:" src="{{ STATIC_URL }}/static/images/logo_2.jpg"
style="float:left; margin:5px" height="100"; border=none"></a><br><br>
<h1>Vehicle Request System <span class="version">(Version 0.1 beta)</span></h1>
</header>
<hr style="clear: left">
<hr>
</body>
</html>

vehicle.html

{% extends "base.html" %}
{% block title %}Vehicle Registration{% endblock %}
{% block content %}
<html>
<head></head>
<body></body>
</html>
{% endblock %}

Спасибо.

Правки

1. Я изменил stati в href="{{STATIC_URL}} /static/css/default.css">, чтобы читать static, как это в моем коде.Я, должно быть, забыл по ошибке при публикации.Двигаясь дальше, однако,

2. Когда я изменяю {{STATIC_url}} /Static на {{STATIC_URL}}/Static т.е.Я удаляю пробел между этими двумя словами - как предложено @sarnold ниже - home.html работает как обычно, но vehicle.html по-прежнему не загружает css и изображение и выдает ошибку в консоли ниже:

File "c:\Python27\lib\site-packages\django\core\files\storage.py", line 234, in path
raise SuspiciousOperation("Attempted access to '%s' denied." % name)
SuspiciousOperation: Attempted access to '\static\images\logo_2.jpg' denied.
[10/Feb/2012 06:11:55] "GET /static//static/images/logo_2.jpg HTTP/1.1" 500 1731

File "c:\Python27\lib\site-packages\django\core\files\storage.py", line 234, in path
raise SuspiciousOperation("Attempted access to '%s' denied." % name)
SuspiciousOperation: Attempted access to '\static\css\default.css' denied.
[10/Feb/2012 06:23:29] "GET /static//static/images/logo_2.jpg HTTP/1.1" 500 1731

3. Когда я комбинирую предложения @sarnold и @cptphil, vehicle.html прекрасно загружает CSS и изображение.home.html однако терпит неудачу.См. Изменения base.html ниже:

base.html (отредактировано так)

<link rel="stylesheet" type="text/css" href="{{STATIC_URL}}css/default.css">
<img alt="logo2:" src="{{STATIC_URL}}images/logo_2.jpg"

home.html теперь не работает!(просмотр источника страницы)

<link rel="stylesheet" type="text/css" href="css/default.css">
<img alt="logo2:" src="images/logo_2.jpg"

vehicle.html теперь работает (просмотр источника страницы)

<link rel="stylesheet" type="text/css" href="/static/css/default.css">
<img alt="logo2:" src="/static/images/logo_2.jpg"

И вот как home.html выглядит в необработанном виде

{% extends "base.html" %}
{% block title %}GEL: Vehicle Request System{% endblock %}
{% block content %}
{% endblock %}

Ответы [ 3 ]

5 голосов
/ 10 февраля 2012

Я считаю, что движок шаблонов делает то, о чем вы его просили.

href="{{STATIC_URL}} /stati/css/default.css"

правильно переводит в

/static/ /stati/css/default.css

Попробуйте

href="{{STATIC_URL}}css/default.css"

вbase.html, если вы ищете

/static/css/default.css

Не могу объяснить, почему home.html будет работать правильно.

2 голосов
/ 10 февраля 2012

Мне кажется, что вы добавили пробелы вручную к base.html:

<link rel="stylesheet" type="text/css" href="{{STATIC_URL}} /stati/css/defau...
<img alt="logo2:" src="{{ STATIC_URL }} /static/imag....

Уберите пробелы до /stati/css и /static/imag и посмотрите, исчезнет ли проблема.

0 голосов
/ 28 мая 2018

пробел =% 20. Обязательно не указывайте пробел в своем URL ...

like : <script src="{% static " js/dashboard/salesPieChart.js" %}"></script>
To: <script src="{% static "js/dashboard/salesPieChart.js" %}"></script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...