Kyl*_*son 6 python django angularjs
我的目标是从我的开发服务器的根目录中提供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错误.
如果存在更明显的解决方案,我愿意改变项目的结构.
您需要同时提供index.html和静态文件/在Django 1.10中这样做:
from django.contrib.staticfiles.views import serve
from django.views.generic import RedirectView
urlpatterns = [
# / routes to index.html
url(r'^$', serve,
kwargs={'path': 'index.html'}),
# static files (*.css, *.js, *.jpg etc.) served on /
url(r'^(?!/static/.*)(?P<path>.*\..*)$',
RedirectView.as_view(url='/static/%(path)s')),
]
Run Code Online (Sandbox Code Playgroud)
看到这个答案,我写了一个更完整的解释,特别是如果你想用它来生产.
请注意,默认情况下 Django 不会提供目录列表。/Users/kyle/Development/project/site/app/beer.jpg如果文件没有显示为 ,您还会收到 404 吗http://localhost/beer.jpg?
URL中urls.py不以斜杠开头;url(r'beer')与之比较url(r'^/beer')
我建议只使用标准的静态支持。这很尴尬,但可以让您在开发期间简单地提供文件,并切换到第 3 方服务器(即 Nginx)进行生产:
https://docs.djangoproject.com/en/dev/howto/static-files/