我们希望路由器能够维护原始URL,并将用户带回原始页面。
那是误会。
这是事件的顺序:
- 用户
http://example.com/dashboard/profile/
在位置栏中键入。 - 浏览器向
GET
服务器发送该URL 的请求。 - 您的服务器以
301
重定向响应进行响应。 - 浏览器会看到该响应,并向发送新
GET
请求http://example.com/dashboard/
。 - 服务器以您的“ Angular”页面响应。
- Angular应用程序启动并查看
window.href
以查看当前路线。它看到根路由并做出适当响应。
换句话说,当您重定向时,您将丢失原始URL。
解决方案很简单:无需重定向,只需返回页面即可响应任何(有效)URL。这样,所请求的URL就会得到维护,当Angular启动时,它将能够找出正确的路由。(这假定路由已在Angular中正确设置,但是听起来您已经可以使用了。)
实现也很简单。只需通过以下方式更改Django
urls.py:
urlpatterns = [ url(r'^dashboard/$', my_view),]
像这样:
urlpatterns = [ url(r'^dashboard/.*$', my_view),]



