2012-02-10 27 views
3

我正在使用django 1.3並進行一些模板繼承。一旦離開主頁,我的/static/設置路徑似乎有問題。問題是,當我加載從base.html繼承的home.html時,CSS和圖像鏈接工作正常。但是,一旦我去一個額外的URL(在這種情況下vehicle.html),CSS和圖像迷失與下面的錯誤:如何擺脫URL中的「%20」代碼(django)

控制檯錯誤

"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文件中,頁面源代碼顯示它向url添加額外的/static/ plust空間。我哪裏可能會出錯?請參閱下面的我的文檔:

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 %} 

感謝。

編輯

我在href="{{STATIC_URL}} /static/css/default.css">改變了stati閱讀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 %} 

回答

5

我相信模板引擎正在做你所要求的。

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

正確地轉換到

/static/ /stati/css/default.css 

嘗試

href="{{STATIC_URL}}css/default.css" 
在base.html文件

,如果你追求的是

/static/css/default.css 

不能解釋爲什麼回家的事情。 HTML會正常工作。

+0

嘿,有趣的事情:如果我按照你的建議,'vehicle.html'加載CSS和圖像。但是,'home.html'無法加載它們!有趣。你認爲這個問題是什麼?僅供參考,所有'html'文檔都放在一個文件夾中,而'image'和'css'放在'static'文件夾中的相應文件夾中。 – lukik 2012-02-10 03:31:45

+0

這很有趣。你可以發佈你的home.html代碼嗎?很難知道可能是什麼問題,但這可能會有所幫助。 – philofinfinitejest 2012-02-10 03:44:08

+0

請參閱原文中的編輯#3.'。謝謝 – lukik 2012-02-10 03:45:55

2

它在我看來像你手動添加空格到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

當我按照你的建議進行操作時,我得到了一個不同的錯誤,如上面原始文章中的編輯#2所示。所以還是不行。謝謝。 – lukik 2012-02-10 03:34:28