B
    CVvg;  ã               @   s    d dl mZ d dlmZmZmZmZ d dlmZm	Z	m
Z
mZ d dlmZ d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 )é    )Úquote)ÚHttpResponseBadRequestÚHttpResponseForbiddenÚHttpResponseNotFoundÚHttpResponseServerError)ÚContextÚEngineÚTemplateDoesNotExistÚloader)Úrequires_csrf_tokenz404.htmlz403.htmlz400.htmlz500.htmlzŠ
<!doctype html>
<html lang="en">
<head>
  <title>%(title)s</title>
</head>
<body>
  <h1>%(title)s</h1><p>%(details)s</p>
</body>
</html>
c       	   	   C   sÀ   |j j}y|jd }W n ttfk
r.   Y nX t|tƒr>|}t| jƒ|dœ}yt	 
|¡}| || ¡}d}W nF tk
r²   |tkr†‚ tƒ  tdddœ ¡}| t|ƒ¡}d}Y nX t||d�S )	a‚  
    Default 404 handler.

    Templates: :template:`404.html`
    Context:
        request_path
            The path of the requested URL (e.g., '/app/pages/bad_page/'). It's
            quoted to prevent a content injection attack.
        exception
            The message from the exception which triggered the 404 (if one was
            supplied), or the exception class name
    r   )Úrequest_pathÚ	exceptionNz	Not Foundz4The requested resource was not found on this server.)ÚtitleÚdetailsz	text/html)Úcontent_type)Ú	__class__Ú__name__ÚargsÚAttributeErrorÚ
IndexErrorÚ
isinstanceÚstrr   Úpathr
   Úget_templateÚrenderr	   ÚERROR_404_TEMPLATE_NAMEr   Zfrom_stringÚERROR_PAGE_TEMPLATEr   r   )	Úrequestr   Útemplate_nameZexception_reprÚmessageÚcontextÚtemplateÚbodyr   © r#   ú9/tmp/pip-install-o3oxmrkh/Django/django/views/defaults.pyÚpage_not_found   s.    


r%   c             C   sL   yt  |¡}W n0 tk
r>   |tkr(‚ ttdddœ dd�S X t| ¡ ƒS )zS
    500 error handler.

    Templates: :template:`500.html`
    Context: None
    zServer Error (500)Ú )r   r   z	text/html)r   )r
   r   r	   ÚERROR_500_TEMPLATE_NAMEr   r   r   )r   r   r!   r#   r#   r$   Úserver_errorO   s    
r(   c             C   sL   yt  |¡}W n0 tk
r>   |tkr(‚ ttdddœ dd�S X t| ¡ ƒS )zS
    400 error handler.

    Templates: :template:`400.html`
    Context: None
    zBad Request (400)r&   )r   r   z	text/html)r   )r
   r   r	   ÚERROR_400_TEMPLATE_NAMEr   r   r   )r   r   r   r!   r#   r#   r$   Úbad_requestd   s    
r*   c             C   sZ   yt  |¡}W n0 tk
r>   |tkr(‚ ttdddœ dd�S X t|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403 Forbiddenr&   )r   r   z	text/html)r   r   )r   r    )r
   r   r	   ÚERROR_403_TEMPLATE_NAMEr   r   r   r   )r   r   r   r!   r#   r#   r$   Úpermission_denied}   s    
r,   N)Úurllib.parser   Zdjango.httpr   r   r   r   Zdjango.templater   r   r	   r
   Zdjango.views.decorators.csrfr   r   r+   r)   r'   r   r%   r(   r*   r,   r#   r#   r#   r$   Ú<module>   s    0