Django неверное количество аргументов в пользовательском обработчике - PullRequest
0 голосов
/ 03 марта 2020

Я пытаюсь создать собственный обработчик для страницы 404, но у меня есть эта ошибка. Я пробовал многочисленные способы, но мой взгляд просто не работает?

handler404 = 'DEMOPROJECT.views.handler404'
handler500 = 'DEMOPROJECT.views.handler500'

def handler404(request, exception, template_name="404.html"):
    response = render_to_response('/not-found')
    response.status_code = 404
    return render(request, response)

def handler500(request, exception, template_name="500.html"):
    response = render_to_response('/not-found')
    response.status_code = 500
    return render(request, response)
ERRORS:
?: (urls.E007) The custom handler500 view 'DEMOPROJECT.views.handler500' does not take the correct number of arguments (request).

System check identified 1 issue (0 silenced).

1 Ответ

1 голос
/ 03 марта 2020

В зависимости от версии Django, которую они используют, представления получают друг друга. В официальной документации вы можете ознакомиться с уменьшенными параметрами.

Это будет выглядеть так для Django> 2.0:

def handler404(request, exception, template_name="404.html"):
    response = render_to_response(template_name)
    response.status_code = 404
    return response

def handler500(request, *args, **argv):
    return render(request, '500.html', status=500)

Возможное более простое решение Если вы не намерены изменять контекст представления, это напрямую создавать соответствующие шаблоны. По умолчанию они используют эти шаблоны, если могут их найти, соответственно: 404.html, 500.html, 403.html и 400.html.

И вы должны поместить их в каталог шаблонов, как вы можете см. ниже.

mysite/
    mysite/
        __init__.py
        settings.py
        ...
    polls/
        urls.py
        view.py
        ...
    templates/
        404.html
        500.html
    manage.py

Кроме того, этот вопрос дублируется .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...