3
v^                 @   sD   d dl mZ d dlmZ dddZdddZddd	Zdd
dZdS )   )engines)TemplateDoesNotExistNc             C   sb   g }t |}xD|D ]<}y
|j| S  tk
rL } z|j| W Y dd}~X qX qW t| |ddS )zt
    Load and return a template for the given name.

    Raise TemplateDoesNotExist if no such template exists.
    N)chain)_engine_listget_templater   append)template_nameusingr   r   enginee r   :/usr/lib/python3.6/site-packages/django/template/loader.pyr      s    

 r   c             C   s   t | trtd|  g }t|}xR| D ]J}xD|D ]<}y
|j|S  tk
rl } z|j| W Y dd}~X q2X q2W q(W | rtdj| |dntddS )z
    Load and return a template for one of the given names.

    Try names in order and return the first template found.

    Raise TemplateDoesNotExist if no such template exists.
    zselect_template() takes an iterable of template names but got a string: %r. Use get_template() if you want to load a single template by name.Nz, )r   zNo template names provided)
isinstancestr	TypeErrorr   r   r   r   join)template_name_listr	   r   r   r   r
   r   r   r   r   select_template   s    



$r   c             C   s4   t | ttfrt| |d}nt| |d}|j||S )z
    Load a template and render it with a context. Return a string.

    template_name may be a string or a list of strings.
    )r	   )r   listtupler   r   render)r   contextrequestr	   templater   r   r   render_to_string4   s    r   c             C   s   | d krt j S t |  gS )N)r   all)r	   r   r   r   r   A   s    r   )N)N)NNN)N) r   
exceptionsr   r   r   r   r   r   r   r   r   <module>   s
   


