我有一个问题,Django会自动为以“.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"),
)
答案 0 :(得分:2)
Django has a setting, "APPEND_SLASH",它为在URLConf中没有匹配的URL添加斜杠,但如果添加斜杠则匹配。所以你的urls.py中可能有一些匹配“.htm /".
的正则表达式模式看起来你正在使用Django serve static files?如果是这样,您可以确保正确配置。在开发期间,为了保持DRY,我通常在我的“urls.py”文件中使用以下内容来提供静态媒体。这需要在settings.py中正确配置MEDIA_ROOT和MEDIA_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}),
)