【问题标题】:Handling Django Rest Framework 404 page directed to react app's home/index处理定向到反应应用程序主页/索引的 Django Rest Framework 404 页面
【发布时间】:2020-12-08 12:53:14
【问题描述】:

我有 DRF 项目,react 项目也在 Django 项目中作为应用程序。 React 应用的名字是frontend

INSTALLED_APPS = [
....
'frontend'
]

前端的结构如下,

项目中唯一的代码在视图中,

def index(request):
    return render(request, "build/index.html")

网址是,

from frontend.views import index
urlpatterns += [path("", index, name="index")]

现在我想做的是,如果浏览器的 URL 响应是 404,那么我不想显示 django 的 404 页面,而是转到 frontend react 应用程序的主页/索引。我尝试在urls.py 中添加handler404 = 'frontend.views.index',但它显示500 内部错误而不是404 或react 应用程序的索引。

任何帮助将不胜感激。提前致谢。

【问题讨论】:

    标签: django django-rest-framework django-react


    【解决方案1】:

    这在常规 django 项目中对我有用。

    def handler404(request, exception):
        return render(request, '404.html', status=404)
    
    

    这里,404.html 是我的自定义模板文件。

    在我的主要 urls.py 中:

    handler404 = myapp.views.handler404
    handler500 = myapp.views.handler500
    

    【讨论】:

      【解决方案2】:
      from frontend.views import index
      urlpatterns += [path("", index, name="index")]
      

      在上面的代码中,您定义了任何 url 都会进入主页,因为您使用了“”。您必须对索引页面使用 url 正则表达式。

      from django.urls import re_path, include    
      urlpatterns += [re_path(r'^$', index, name="index")]
      

      这对你有用。

      【讨论】:

      • 感谢您的回答。但它对我不起作用。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-10-02
      • 2017-07-17
      • 2023-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-06
      相关资源
      最近更新 更多