2010-05-01 53 views
2

我有一個問題,Django的自動添加斜線到URL以「熱媒」爲什麼Django會在以「.htm」結尾的url之後自動添加斜線,而當url以「.html」結尾時不會自動添加斜線?

網址就像結束: http://127.0.0.1:8080/js/tiny_mce/themes/advanced/link.htm 變爲: http://127.0.0.1:8080/js/tiny_mce/themes/advanced/link.htm/

但是,如果我重新命名‘link.htm’到「鏈接.html「然後沒有問題發生。

問題在哪裏?

謝謝。

urls.py:

from django.conf.urls.defaults import * 
from dtunes.views import * 
from django.conf import settings 
from django.contrib import admin 

admin.autodiscover() 

urlpatterns = patterns('', 

    url(r'^$', home, name='home'), 

    url(r'^(?P<path>.*\.(htm|html|jpg|jpeg|css|gif|js|png))$', "django.views.static.serve", { 
      "document_root": settings.MEDIA_ROOT, 
     }, name="media"), 

    url(r'^img/tr.gif', track, name='track'), 
    (r'^admin/', include(admin.site.urls)), 
    url(r'^smscoin/ipn/', ipn, name='smscoin_ipn'), 
    url(r'^download-link/', get_download_link, name='get_download_link'), 
    url(r'^get/(?P<name>.*)/$', item_details, name="item_details"), 
    url(r'^getnow', item_details_paid, name="item_details_paid"), 
    url(r'^download/(?P<name>.*)/$', send_direct_file, name="send_direct_file"), 
    url(r'^(?P<name>.*)/$', plain_page, name="plain_page"),  

) 
+0

如何URL映射看起來像這個資源? – 2010-05-01 12:17:26

+0

你可能想重新考慮這樣的服務靜態媒體。 Django的靜態服務不適用於任何類型的生產環境 - 它不穩定,速度慢,並且不安全。內置的django.views.static.serve僅適用於開發;它看起來並不像你已經設置好它能夠輕鬆切換到其他產品。 – user85461 2010-05-01 19:15:16

+0

確定它僅用於開發。在我使用Nginx提供靜態文件的產品上,我沒有這個問題。它發生在開發環境中,我找不到原因:( 我的Nginx生產配置首先檢查是否存在靜態文件 - 如果沒有 - 嘗試使用作爲FCGI運行的Django服務。 – Zelid 2010-05-01 20:21:14

回答

2

Django has a setting, "APPEND_SLASH",這更增加了未否則URL配置匹配的URL的斜線,但如果添加斜線將匹配。所以你可能在你的urls.py中有一些匹配「.htm /」的正則表達式模式。

它看起來像你使用Django到serve static files?如果是這樣,你可以確保這個配置正確。在開發過程中,爲了保持乾爽,我通常在我的「urls.py」文件中使用以下內容來提供靜態媒體。這需要一個正確配置的settings.py中MEDIA_ROOTMEDIA_URL

# urls.py 
from django.conf import settings 

urlpatterns = patterns(
    ... 
) 

if settings.DEBUG: 
    urlpatterns += patterns('', 
      (r'^%s/(?P<path>.*)$' % settings.MEDIA_URL[1:-1], 
       'django.views.static.serve', 
       {'document_root': settings.MEDIA_ROOT}), 
    ) 
相關問題