我的目标是从我的开发服务器的根目录提供一个 Angular 项目。就 Django 而言,这些文件将是完全静态的,不需要 Django 模板处理。然后,angular 项目将对位于同一开发服务器上/api/的 Django 项目进行资源调用,然后该项目将返回从 View 生成的 json 结果,供 Angular 项目处理。
我认为这就像将以下内容添加到我的 urls.py 文件一样简单。
url(r'^/', 'django.views.static.serve', {
'document_root':'/Users/kyle/Development/project/site/app',
}),
或者
+ static("^/$", document_root="/Users/kyle/Development/project/site/app")
到 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')),
]
参见 this answer我在其中对此类配置进行了更完整的解释——特别是如果您想将其用于生产。
关于python - 从 Django 开发服务器的根目录提供静态文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23939670/