我有一个Django
应用程序(我是一个相当新的应用程序,所以我尽我所能来学习输入和输出),我希望有一个url端点只需重定向到一个另一个文件夹(app)中的静态html文件。
我的项目文件层次结构如下:
docs/
- html/
- index.html
myapp/
- urls.py
我的urls.py
看起来像是:
from django.conf.urls import patterns, include, url
from django.views.generic import RedirectView
urlpatterns = patterns('',
url(r'^docs/$', RedirectView.as_view(url='/docs/html/index.html')),
)
但是,当我导航到http://localhost:8000/docs
时,我看到浏览器重定向到http://localhost:8000/docs/html/index.html
,但该页面无法访问。
是否有任何理由导致/docs/html/index.html
在这样的重定向中无法使用myApp
应用程序?
非常感谢指针。
答案 0 :(得分:4)
注意:自Django 1.5以来已弃用
direct_to_template
。使用 而是TemplateView.as_view。
我认为你想要的是Template View,而不是RedirectView。你可以这样做:
<强> urls.py 强>
from django.conf.urls import patterns, include, url
from django.views.generic.simple import direct_to_template
urlpatterns = patterns('',
(r'^docs/$', direct_to_template, {
'template': 'index.html'
}),
)
只需确保index.html
的路径位于TEMPLATE_DIRS设置中,或者只是将其放在应用的templates
文件夹中(This answer可能有帮助)。
答案 1 :(得分:3)
我很确定Django正在寻找匹配/docs/html/index.html
的URL路由,它不知道提供静态文件,当它找不到显示错误的路由时