当页面url失败时如何重定向?

2024-04-16 11:30:44 发布

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

我想在页面失败时重定向它, 用这个访问页面很好

http://192.168.0.114:8686/test/1/
http://192.168.0.114:8686/test/2/

但是当我试图访问这个http://192.168.0.114:8686/test时,它会出错,当错误发生时,它希望值为"page_no=1"

urlpatterns = [
    url(r'^', include(router.urls)),
    url(r'^test/(?P<page_no>\d+)/$', views.test.as_view(), name='test_page'),
]
Page not found (404)
Request Method: GET
Request URL:    http://192.168.0.114:8686/test
Using the URLconf defined in couponer.urls, Django tried these URL patterns, in this order:

^ ^$ [name='api-root']
^ ^\.(?P<format>[a-z0-9]+)/?$ [name='api-root']
admin/
^ ^^p//$ [name='udemylinks-list']
^ ^^p\.(?P<format>[a-z0-9]+)/?$ [name='udemylinks-list']
^ ^^p//(?P<pk>[^/.]+)/$ [name='udemylinks-detail']
^ ^^p//(?P<pk>[^/.]+)\.(?P<format>[a-z0-9]+)/?$ [name='udemylinks-detail']
^ ^$ [name='api-root']
^ ^\.(?P<format>[a-z0-9]+)/?$ [name='api-root']
^pages/(?P<page_no>\d+)/$ [name='Pages']
^html/(?P<page_no>\d+)/$ [name='index']
^test/(?P<page_no>\d+)/$ [name='test_page']
The current path, test, didn't match any of these.

Tags: nonametestapiformathttpurlrequest
1条回答
网友
1楼 · 发布于 2024-04-16 11:30:44

所以当它抛出404错误时,你想让它重定向吗

选项1:客户端重定向

  1. 创建一个名为404.html的页面并将其放置在templates文件夹中
  2. 把这个代码放到404页上
<script>
setTimeout(function () {
   window.location.href = "{% url 'studies:index' %}"; //will redirect to your blog page (an ex: blog.html)
}, 2000);
</script>

选项2:服务器端重定向

在项目的主urls.py中,可以执行以下操作:

if not settings.DEBUG:
    handler400 = 'myapp.views.bad_request'
    handler403 = 'myapp.views.permission_denied'
    handler404 = 'myapp.views.page_not_found'

并将要处理错误的应用程序中的views.py更改为:

def bad_request(request):
    return redirect('index')

def permission_denied(request):
    return redirect('index')

def page_not_found(request):
    return redirect('index')

相关问题 更多 >