从Django development的根目录服务静态文件

2024-05-15 02:14:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我的目标是让一个角度项目从我的开发服务器的根上得到服务。就Django而言,这些文件将是完全静态的,不需要Django模板处理。angular项目随后将对位于同一开发服务器上/api/的Django项目进行资源调用,然后该项目将返回从视图生成的json结果,供angle项目处理。在

我想这很容易,只要在我的网址.py文件。在

url(r'^/', 'django.views.static.serve', {
        'document_root':'/Users/kyle/Development/project/site/app',
}),

或者

^{pr2}$

到urlpatterns的末尾。在

其中/project/site/app是包含Angularjs文件的目录。在

但是,这两个都给我留下了404个错误。在

如果有更明显的解决方案,我愿意改变项目的结构。在


Tags: 文件项目django服务器project视图模板api
3条回答

你需要两者兼备索引.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,我在其中对这种配置进行了更完整的解释,尤其是如果您想将其用于生产的话。在

  1. 注意,默认情况下Django不提供目录列表。如果文件/Users/kyle/Development/project/site/app/beer.jpg不显示为http://localhost/beer.jpg,你还会得到404吗?

  2. urls.py中,url不以斜杠开头;将url(r'beer')与{}

我建议使用标准的静态支架。这很尴尬,但可以让您在开发过程中简单地提供文件,并切换到第三方服务器(即Nginx)进行生产:

https://docs.djangoproject.com/en/dev/howto/static-files/

结果发现这是两个东西的组合,正如shavenwartog所说,它不应该有斜线。此外,它还需要一个正则表达式来将其指向文件。最后一行是:

url(r'^(?P<path>.*)$', 'django.views.static.serve', {
        'document_root':'/Users/kyle/Development/project/site/app',
}),

然后我可以访问像

^{pr2}$

相关问题 更多 >

    热门问题