在Django中,如何直接从urls.py进行简单的重定向?当然我是一个组织良好的人,喜欢DRY原则,所以我想根据它的命名url模式得到目标,而不是硬编码url.
我在/ static /文件夹中有我的index.html.我尝试时,我的django应用程序正常运行:
http://127.0.0.1:8000/index.html
Run Code Online (Sandbox Code Playgroud)
但我想通过url访问index.html:
http://127.0.0.1:8000/
Run Code Online (Sandbox Code Playgroud)
我写了一个视图,它的工作原理:
class IndexView(TemplateView):
template_name = 'index.html'
Run Code Online (Sandbox Code Playgroud)
我还添加到urls.py(这让我像静态一样http://127.0.0.1:8000/css/style.css):
url(r'^(?P<path>.*)$', 'django.contrib.staticfiles.views.serve', {
'document_root': settings.STATIC_ROOT, 'show_indexes':True
}),
Run Code Online (Sandbox Code Playgroud)
但我认为有一种方法可以在没有TemplateView的情况下做我想做的事情.
有什么建议?谢谢.我的django版本是:Django 1.5
编辑:
我将index.html放入静态的原因是:我想制作与Phonegap兼容的django应用程序,所以在正确编码后,我所要做的就是 - > 从静态文件夹中生成.zip并将其作为移动应用程序上传到Phonegap.简单干净.
我有一个关于新的Django 1.3静态文件框架的一般性问题.
我非常喜欢Django 1.3中引入的新Django静态文件功能.通常,我设置STATIC_URL ="/ static /"并在我的模板中输入{{STATIC_URL}}模板标签.开发服务器自动提供静态文件的方式非常棒,我的所有内容都按预期提供.
The {{ STATIC_URL }} would be substituted in the template and might serve up files like this...
example.com/static/css/master.css
example.com/static/images/logo.png
example.com/static/js/site.js
Run Code Online (Sandbox Code Playgroud)
但是,我正在使用旧网站,其中静态媒体安装在网址根目录.例如,静态URL的路径可能如下所示:
example.com/css/master.css
example.com/images/logo.png
example.com/js/site.js
Run Code Online (Sandbox Code Playgroud)
它不使用"静态"url命名空间.
我想知道是否有办法让新的静态文件功能不使用静态命名空间并提供上面的URL,但仍然保留了新的静态文件框架(开发服务器提供的collectstatic,静态文件等)的好处.我尝试设置STATIC_URL =""和STATIC_URL ="/",但似乎都没有达到预期的效果.
有没有办法配置静态文件来提供没有命名空间的静态文件?谢谢你的考虑.
我的目标是从我的开发服务器的根目录中提供Angular项目.就Django而言,文件将是完全静态的,不需要Django模板处理.然后,角度项目将对位于同一开发服务器上的/ api /的Django项目进行资源调用,然后将返回从Angular项目的视图生成的json结果进行处理.
我认为这就像在urls.py文件中添加以下内容一样简单.
url(r'^/', 'django.views.static.serve', {
'document_root':'/Users/kyle/Development/project/site/app',
}),
Run Code Online (Sandbox Code Playgroud)
要么
+ static("^/$", document_root="/Users/kyle/Development/project/site/app")
Run Code Online (Sandbox Code Playgroud)
到urlpatterns的结尾.
/ project/site/app是Angularjs文件的目录.
但是,这两个都让我有404错误.
如果存在更明显的解决方案,我愿意改变项目的结构.