Почему Django автоматически добавляет косую черту после URL, который заканчивается на «.htm», а не когда URL заканчивается на «.html»? - PullRequest
2 голосов
/ 01 мая 2010

У меня проблема в том, что Django автоматически добавляет косую черту в URL, заканчивающийся на ".htm"

URL вроде: 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" в "link.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"),       

)

1 Ответ

2 голосов
/ 01 мая 2010

У Django есть настройка «APPEND_SLASH» , которая добавляет косую черту к URL-адресам, которые в URLConf не совпадают, но будут совпадать, если добавлена ​​косая черта. Таким образом, у вас, вероятно, есть некоторый шаблон регулярного выражения в вашем urls.py, который соответствует ".htm /".

Похоже, вы используете Django для показа статических файлов ? Если это так, вы можете убедиться, что это настроено правильно. Во время разработки, чтобы сохранить СУХОЕ состояние, я обычно использую следующее в своем файле «urls.py» для обслуживания статических носителей. Для этого необходимо правильно настроить MEDIA_ROOT и MEDIA_URL в settings.py:

# 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}),
    )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...