Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/330.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.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自定义404页面不工作_Python_Django_Error Handling_Http Status Code 404 - Fatal编程技术网

Python Django自定义404页面不工作

Python Django自定义404页面不工作,python,django,error-handling,http-status-code-404,Python,Django,Error Handling,Http Status Code 404,所以,在我的项目中,我想添加一个自定义的404错误页面,所以我遵循了我在网络上能找到的内容,但似乎没有什么对我有用 以下是我的文件: 设置.py import os # Django settings for HogwartsMail project. PROJECT_PATH = os.path.realpath(os.path.dirname(__file__)) DEBUG = False TEMPLATE_DEBUG = DEBUG # Hosts/domain names tha

所以,在我的项目中,我想添加一个自定义的404错误页面,所以我遵循了我在网络上能找到的内容,但似乎没有什么对我有用

以下是我的文件:

设置.py

import os
# Django settings for HogwartsMail project.

PROJECT_PATH = os.path.realpath(os.path.dirname(__file__))

DEBUG = False
TEMPLATE_DEBUG = DEBUG

# Hosts/domain names that are valid for this site; required if DEBUG is False
# See https://docs.djangoproject.com/en/1.5/ref/settings/#allowed-hosts
ALLOWED_HOSTS = ["*"]
url.py

urlpatterns = patterns('',
    ...
)

handler404 = "HogwartsMail.views.error404"
views.py

def error404(request):
    return render(request,'404.html')
然而,每当我尝试输入一个随机url时,我得到的不是404错误,而是服务器错误(500)

正如我所说的,我尝试了很多不同的方法,但没有一种对我有效

另外,我遇到的另一个问题是,我加载的页面非常慢,而且它们无法打开样式或图像,因此我假设,当
DEBUG=False
时,我需要所有内容都已联机。对吗

def error404(request):
    return HttpResponseNotFound(render_to_string('404.html'))
另一个例子是:

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

好的,事实证明,除了创建一个404.html页面,我似乎什么都不需要做。通过在中创建,当出现“Page not found”错误时,Django将首先在模板中查找404.html,然后再使用自己的错误页面。我仍然有一个问题,我的静态文件不在网上-当设置
DEBUG=False
时,css文件和我的任何图像都不会出现。除此之外,我的问题已经解决。

DEBUG=False
时,您可以使用
python manage.py runserver--unsecure
在本地开发期间为静态文件提供服务


请参阅中的更多信息

在项目文件夹的url.py中添加以下内容,其中帐户(可以是任何应用程序)是同一项目的应用程序:

project/url.py

handler404 = 'accounts.views.page_not_found'
def page_not_found(request):

"""
Page not found Error 404
"""

     response = render_to_response('404.html',context_instance=RequestContext(request))
     response.status_code = 404
     return response
在“帐户”视图中添加以下内容:

帐户/视图.py

handler404 = 'accounts.views.page_not_found'
def page_not_found(request):

"""
Page not found Error 404
"""

     response = render_to_response('404.html',context_instance=RequestContext(request))
     response.status_code = 404
     return response
别忘了做必要的进口货。在登台测试时,也不要忘记更改settings.py中的Debug=False。

因为我在项目中添加了2个
url.py
。因此,我在我的基本
url.py
中添加了
handler404
。我的父母
url.py
看起来像这样

from django.conf.urls import handler404
import myapp

urlpatterns = [
   path('', include('myapp.urls')),
   path('admin/', admin.site.urls),
]

handler404 = myapp.views.error_404
def error_404(request, exception):
    data = {"name": "somthing error"}
    return render(request,'myapp/404.html', data)
error_404
是我的
views.py
中的一个视图。像这样

from django.conf.urls import handler404
import myapp

urlpatterns = [
   path('', include('myapp.urls')),
   path('admin/', admin.site.urls),
]

handler404 = myapp.views.error_404
def error_404(request, exception):
    data = {"name": "somthing error"}
    return render(request,'myapp/404.html', data)

检查完整教程

500错误的回溯是什么?不要在生产中使用允许的_HOSTS=[“*”]@user937284它有什么危险?您没有在urlpatterns中指定吗?尝试添加
(“^404/$”,“HogwartsMail.views.error404”)
所有这些都不起作用,我仍然会收到500个错误。有什么想法吗?需要配置or并进行回溯。