Страница не найдена сообщение с использованием Django - PullRequest
0 голосов
/ 04 апреля 2011

Если пользователь вводит случайный URL (http://testurl/cdsdfsd) для сайта, как оформить страницу, не найден. Есть какие-либо изменения settings.py или как с этим справиться ..

Ответы [ 2 ]

2 голосов
/ 04 апреля 2011

У django tutorial и docs есть разделы, которые вы должны прочитать.

Вам необходимо переопределить стандартное представление 404.

в вашем urlconf:

handler404 = 'mysite.views.my_custom_404_view'
0 голосов
/ 04 апреля 2011

По умолчанию django отображает шаблон 404.html.Создайте этот файл в любом месте, где находятся ваши шаблоны.Например, вы можете создать каталог templates в корневом каталоге проекта django, а затем добавить его в TEMPLATE_DIRS in settings.py:

import os
BASE_DIR = os.path.abspath(os.path.dirname(__file__))

TEMPLATE_DIRS = (
    os.path.join(BASE_DIR, 'templates/'),
)

. Другое решение - написать собственное промежуточное ПО, которое будет проверять404 ответ, и решить, что отображать.Это особенно полезно, если вы хотите иметь запасное решение (например, статические страницы) или поиграть с ответом и, например, выполнить поиск по сайту и показать возможные варианты.

вот пример промежуточного программного обеспечения от django.contrib.flatpages.он проверяет, определен ли url в базе данных, если да - возвращает эту страницу, если нет, передает и возвращает ответ по умолчанию.

class FlatpageFallbackMiddleware(object):
    def process_response(self, request, response):
        if response.status_code != 404:
            return response # No need to check for a flatpage for non-404 responses.
        try:
            return flatpage(request, request.path_info)
            # Return the original response if any errors happened. Because this
            # is a middleware, we can't assume the errors will be caught elsewhere.
        except Http404:
            return response
        except:
            if settings.DEBUG:
                raise
            return response
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...