python - 从 Django 开发服务器的根目录提供静态文件

标签 python django angularjs

我的目标是从我的开发服务器的根目录提供一个 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/

相关文章:

AngularJS - 如何为每次 ng-repeat 迭代生成随机值

python - 如何将字符串中的单个字母变成大写

python - 让 python os.chdir 跟随 vim autochdir?

python - 尝试编译 The Powder Toy 时出现链接错误

python - 如何获取以前版本的 Python Selenium Webdriver

javascript - Angular 应用程序保护和用户身份验证

django - 带有Select Widget的Django ModelForm-使用object.uid作为默认选项值而不是object.id

django - 如何在 CreateView 中获取创建的对象

javascript - 仅使用 javascript 或 django 调用 python 脚本

javascript - 如何将 $scope 传递给 $factory