2011-03-01 64 views
1

嘿傢伙 - 我無法正確設置我的Django的URL文件的下列事情!Django URL配置爲javascript文件

<script type="text/javascript" src="/javascript/HashMap.js"></script> 

會發生什麼是文件試圖得到發現:http://localhost/javascript/HashMap.js但這個網址不會在URL配置中的任何匹配,因此GET請求失敗。

任何人都可以幫助我找到正確的線添加,以允許這種事情的工作!

乾杯

安迪

回答

3

您需要將JavaScript作爲靜態文件提供。

如何在生產中執行此操作取決於您正在運行的Web服務器。 Django通常不會提供靜態文件。

例如,對於Apache的,你把這個在你的Apache配置:

Alias /javascript/ /usr/local/wsgi/static/javascript/ 

然後你就可以把你的.js文件中引用的目錄。

Django文檔有一個整個頁面只是這個話題(靜態文件服務):http://docs.djangoproject.com/en/dev/howto/static-files/

+0

啊哈 - 我明白了 - 我認爲這將會發生。然後Django可以爲靜態文件提供服務 - 但是它的糟糕做法......任何特別的原因都是它的不好的做法。必須做一個別名的Apache配置和文件到處看起來像一個糟糕的解決方案。 – RenegadeAndy 2011-03-01 01:32:37

+0

它只是沒有爲此設計(靜態文件有效地服務)。開發很好,但不推薦在生產中使用。 – payne 2011-03-01 01:36:39

1

的JavaScript通常被認爲是一種靜態的資源文件。如果您的情況確實如此,我會將您引薦至Django documentation。如果你真的需要使用urlconf來指向一個生成Javascript的視圖,那麼你需要在你的URLconf中輸入一個條目並將它指向一個視圖。

0

如果你想只得到該文件爲靜態內容,這個問題將在一定MEDIA_ROOT你和MEDIA_URL設置變量。只需檢查它們是指向JavaScript文件的位置,並且您的MEDIA_URL應該有一個後綴,以確保您訪問存儲媒體文件的「特殊」目錄。

在你試圖在文件上做一些處理的情況下,在運行時生成它,等 與此正則表達式嘗試:

r'^javascript/(?P<jsfile>.+\.js)$' 

在你看來聲明,而不是隻得到了請求作爲參數,你將有請求和一個叫做jsfile的新參數,這就是你要求的文件名。因此,在視圖中,執行處理並返回一個帶有處理文件內容的HttpResponse對象。