3
(h                 @   s   d dl mZ d dlmZmZmZmZ d dlmZ d dl	m
Z
 d dlmZ dZdZdZd	Zeefd
dZeefddZeefddZeefddZdS )    )http)ContextEngineTemplateDoesNotExistloader)six)
force_text)requires_csrf_tokenz404.htmlz403.htmlz400.htmlz500.htmlc       	      C   s   |j j}y|jd }W n ttfk
r.   Y nX t|tjr@|}| j|d}yt	j
|}|j|| }d}W n< tk
r   |tkr t jd}|jt|}d}Y nX tj||dS )aB  
    Default 404 handler.

    Templates: :template:`404.html`
    Context:
        request_path
            The path of the requested URL (e.g., '/app/pages/bad_page/')
        exception
            The message from the exception which triggered the 404 (if one was
            supplied), or the exception class name
    r   )request_path	exceptionNz[<h1>Not Found</h1><p>The requested URL {{ request_path }} was not found on this server.</p>z	text/html)content_type)	__class____name__argsAttributeError
IndexError
isinstancer   	text_typepathr   get_templaterenderr   ERROR_404_TEMPLATE_NAMEr   Zfrom_stringr   r   ZHttpResponseNotFound)	requestr   template_nameZexception_reprmessagecontexttemplatebodyr    r   9/tmp/pip-install-q3hcpn_q/Django/django/views/defaults.pypage_not_found   s*    

r    c             C   sF   yt j|}W n( tk
r6   |tkr( tjdddS X tj|j S )zS
    500 error handler.

    Templates: :template:`500.html`
    Context: None
    z<h1>Server Error (500)</h1>z	text/html)r   )r   r   r   ERROR_500_TEMPLATE_NAMEr   ZHttpResponseServerErrorr   )r   r   r   r   r   r   server_error;   s    r"   c             C   sF   yt j|}W n( tk
r6   |tkr( tjdddS X tj|j S )zS
    400 error handler.

    Templates: :template:`400.html`
    Context: None
    z<h1>Bad Request (400)</h1>z	text/html)r   )r   r   r   ERROR_400_TEMPLATE_NAMEr   ZHttpResponseBadRequestr   )r   r   r   r   r   r   r   bad_requestM   s    r$   c             C   sT   yt j|}W n( tk
r6   |tkr( tjdddS X tj|j| dt|idS )z
    Permission denied (403) handler.

    Templates: :template:`403.html`
    Context: None

    If the template does not exist, an Http403 response containing the text
    "403 Forbidden" (as per RFC 7231) will be returned.
    z<h1>403 Forbidden</h1>z	text/html)r   r   )r   r   )r   r   r   ERROR_403_TEMPLATE_NAMEr   ZHttpResponseForbiddenr   r   )r   r   r   r   r   r   r   permission_deniedc   s    r&   N)Zdjangor   Zdjango.templater   r   r   r   Zdjango.utilsr   Zdjango.utils.encodingr   Zdjango.views.decorators.csrfr	   r   r%   r#   r!   r    r"   r$   r&   r   r   r   r   <module>   s    *