【问题标题】:angular django rewrite unmatched urls to index.html (angular app)angular django 将不匹配的 url 重写为 index.html (angular app)
【发布时间】:2018-09-06 10:26:16
【问题描述】:

我有一个 django 服务器和一个 Angular 应用程序。

我能够启动 Angular 应用并使用我添加到应用中的链接导航到网站的各个部分。

但如果我想直接访问网站的某个部分,我会收到 404 错误。

例如,如果我的应用中有一个链接可以将我定向到

niftysite.com/team 

有效

但如果我输入浏览器的网址

niftysite.com/team 

404 失败

我知道这是因为默认行为是在服务器 url 中查找页面的链接。

我也知道解决方法是让服务器端 404 重定向到包含路由参数的角度 index.html 页面。

我的问题是怎么做?

我已经开始实施,但我不知道如何解决它。剩下的任何指导都会有所帮助。

这是我目前所拥有的。

urls.py

handler404 = views.error_404

views.py

from django.shortcuts import render

def error_404(request):
    data = {}
    return render(request, 'index.html', data)

类似于这个问题,但我没有使用 Nginx

How to redirect 404 requests to homepage in Django single page app using Nginx?

【问题讨论】:

  • 如果我理解你的问题是正确的; urlpatterns = ['^.*$', views.error_404, name='error_404']
  • @MihirKavatkar 谢谢我会试一试。现在路线呢?它持续存在吗?这在django中正常吗?示例我是否会重定向到 url 信息仍处于状态的索引页面?
  • 我需要查看 url 信息是否处于该状态的部分,但我的一般处理方式是在 index.html 的 index.html 中添加一个 ui-view(UI 路由器) app 并在定义我的状态时放置一个 $urlRouterProvider.otherwise('/niftysite.com/team')。

标签: django angular http-status-code-404 reroute


【解决方案1】:

这里是实现:

urls.py

url(r'^.*$', views.PassToAngular.as_view()) 

确保此 url 是 urls 数组中的最后一个 url。

views.py

from django.shortcuts import render
from django.views.generic import TemplateView


    class PassToAngular(TemplateView):

        def get(self, request, **kwargs):
            return render(request, 'index.html', context= None)

感谢 MihirKavatkar 的帮助!

【讨论】:

    猜你喜欢
    • 2021-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多