>

404.html 페이지가 있지만 경우에 따라 404 및 500 등의 json 오류 메시지를 보낼 수 있기를 원합니다. 다음 페이지를 읽었습니다 :

https ://docs.djangoproject.com/en/dev/topics/http/views/#the-404-page-not-found-view

구현을 보여주는 어떤 종류의 예제가 있습니까? 내 urls.py에 있지만 오류가 발생해도 선택되지 않습니다.


  • 답변 # 1

    이것은 나를 위해 일했다 :

    from django.conf.urls import patterns, include, url
    from django.views.static import * 
    from django.conf import settings
    from django.conf.urls.defaults import handler404, handler500
    from app.views import error
    urlpatterns = patterns('',
        # Examples:
        # url(r'^$', 'app.views.home', name='home'),
    )
    handler404 = error.error_handler
    handler500 = error.error_handler
    
    

    해당 컨트롤러로 갈 때 원하는대로 할 수 있습니다.

  • 답변 # 2

    이전 답변 외에도 views.py는 404로 HttpResponse를 반환해야한다고 말하는 것이 중요합니다 http 헤더의 상태입니다. 검색 엔진에 현재 페이지가 404임을 알리는 것이 중요합니다. 스패머는 때때로 어떤 위치로 연결되는 것처럼 보일 수있는 많은 URL을 생성하지만 다른 컨텐츠를 제공합니다. 그들은 종종 서로 다른 주소를 많이 만들어 거의 동일한 내용을 제공합니다. 그리고 그것은 사용자 친화적이지 않기 때문에 대부분의 SEO 가이드 라인은 그것을 처벌합니다. 따라서 동일한 의사 404 콘텐츠를 표시하는 많은 주소가 있으면 검색 웹 사이트의 크롤링 시스템에 적합하지 않을 수 있습니다. 이 때문에 사용자 정의 404로 제공하는 페이지의 상태가 404인지 확인하려고합니다. 그래서 여기 좋은 방법입니다 :

    응용 프로그램의 urls.py에 추가 :

    # Imports
    from django.conf.urls.static import static
    from django.conf.urls import handler404
    from django.conf.urls import patterns, include, url
    from yourapplication import views
    ##
    # Handles the URLS calls
    urlpatterns = patterns('',
        # url(r'^$', include('app.homepage.urls')),
    )
    handler404 = views.error404
    
    

    응용 프로그램의 views.py에 추가 :

    # Imports
    from django.shortcuts import render
    from django.http import HttpResponse
    from django.template import Context, loader
    
    ##
    # Handle 404 Errors
    # @param request WSGIRequest list with all HTTP Request
    def error404(request):
        # 1. Load models for this view
        #from idgsupply.models import My404Method
        # 2. Generate Content for this view
        template = loader.get_template('404.htm')
        context = Context({
            'message': 'All: %s' % request,
            })
        # 3. Return Template for this view + Data
        return HttpResponse(content=template.render(context), content_type='text/html; charset=utf-8', status=404)
    
    

    비밀은 마지막 줄에 있습니다 : status = 404

    도움을 빕니다!

    이 접근법에 대한 커뮤니티의 의견을 기다리겠습니다. =)

  • 답변 # 3

    기본 :

    404 오류 처리를위한 사용자 정의보기를 정의하려면 URL 구성에서 handler404 = 'views.error404' 와 같은 handler404보기를 정의하십시오.

    기본 사항 외에도 몇 가지 참고할 사항 (사용자 정의 404보기) :

    <올>

    Debug=False 에서만 사용할 수 있습니다.  모드.

    대부분의 대답에서 더 무시되는 것이 많았습니다.

    404보기의 기본값은

    와이즈 비즈 와이즈 비즈

    매개 변수 알림

    이로 인해 django.views.defaults.page_not_found(request, exception, template_name='404.html') 내에서 404에서 500으로 리디렉션되었습니다.   exception 에 정의 된 함수   def get_exception_response(self, request, resolver, status_code, exception) 매개 변수를 찾을 수 없으므로

    core.handlers.base

관련 자료

  • 이전 자바 스크립트를 사용하여 google 크롬 chrome - // flags/값을 활성화하는 방법은 무엇입니까?
  • 다음 functional programming - Erlang에서 파일 읽기 관련 문제