Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django handler404正在更改我的URL_Python_Django_Django Urls - Fatal编程技术网

Python Django handler404正在更改我的URL

Python Django handler404正在更改我的URL,python,django,django-urls,Python,Django,Django Urls,我已经定义了自己的404处理程序,但似乎当我使用它时,我的URL正在改变。 我已经在我的根url.py中定义了404处理程序,下面是代码的一部分 def page_not_found(request): if request.session.has_key('loggedin'): return HttpResponseNotFound(login_404) path = request.path if path.startswith('/path'):

我已经定义了自己的404处理程序,但似乎当我使用它时,我的URL正在改变。 我已经在我的根url.py中定义了404处理程序,下面是代码的一部分

def page_not_found(request):
    if request.session.has_key('loggedin'):
        return HttpResponseNotFound(login_404)
    path = request.path
    if path.startswith('/path'):
        return HttpResponseNotFound(non_loign_404)

handler404 = page_not_found
其中,login_404和non_login_404是字符串。我渲染并保留它们,以便更快地访问

根据应用程序中的上下文,我有不同的404页面

来谈谈我的实际问题:

假设我有url/a/b 启用自定义404处理程序后,url变为/a/a/b 如果我有/path/x,它将变成/path/path/x

有什么不对劲的,请告诉我。提前谢谢

编辑


直到我第一次遇到404,每个url如果得到正确的解析,但是从第一个404页面开始,每个url都被解析为404

你说它“变成”是什么意思?当您访问
/a/b
时(假设不存在),浏览器会将您重定向到
/a/b
,而不是显示您的自定义404?这有时是您在Web服务器中如何配置django的问题。你是怎么设置的?我的apache配置很好。我强烈地看到,当我启用自定义404处理程序时,它正在更改URL。如果注释掉该处理程序,则会检测到实际的URL。如何在URL.py中查看?我不明白