Django 2 Angular 6编译的静态文件始终路由到静态文件夹

时间:2018-11-02 08:50:46

标签: django typescript angular6 django-staticfiles url-pattern

我有一个Django 2 + Angular 6项目。我有一个构建过程,将已编译的JS文件移动到Django的静态文件夹中。

但是,每当我转到某个链接http://127.0.0.1:8000/#/upload时,浏览器就会始终将我重定向到http://127.0.0.1:8000/static/my_project/#/upload。发生了什么事?

我正在使用哈希定位策略。我的页面仍然有效,但是每当刷新后一个URL或直接访问它时,我都会得到一个404。

我的urls.py文件是这样的:

urlpatterns = [
    path('', IndexView.as_view()),
    path('admin/', admin.site.urls),
    path('api/v1/', include(router.urls)),
]

第一个网址格式与IndexView匹配,TemplateView与此index.html匹配:

{% load static from staticfiles %}
<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <link rel="icon" type="image/x-icon" href="{% static 'favicon.ico' %}">
</head>
<body>
  <app-root></app-root>
<script type="text/javascript" src="{% static 'uploader/runtime.js' %}"></script>
<script type="text/javascript" src="{% static 'uploader/polyfills.js' %}"></script>
<script type="text/javascript" src="{% static 'uploader/styles.js' %}"></script>
<script type="text/javascript" src="{% static 'uploader/vendor.js' %}"></script>
<script type="text/javascript" src="{% static 'uploader/main.js' %}"></script>
</body>
</html>

1 个答案:

答案 0 :(得分:1)

好,所以我知道了...发布给将来的读者。如果您100%确信正在使用哈希定位策略并且一切正常,那么请确保您没有

<base href="/static/...">在您的<head>标记中(出于保密目的,我在原始问题中将其删除了..可能应该将其掩盖而不是将其完全删除...

发生上述情况是因为我习惯于使用以下命令进行构建:

ng build --base-href /static/...