Django рдЯреЗрдореНрдкрд▓реЗрдЯ рдиреЗрд╡рд┐рдЧреЗрд╢рди

рд╣рд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рд╢рд╛рдпрдж рдПрдХ рдиреЗрд╡рд┐рдЧреЗрд╢рди рд╕рд┐рд╕реНрдЯрдо рд╣реЛрддрд╛ рд╣реИ - рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд▓рд┐рдВрдХ, рдореЗрдиреВ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╣рдо (рдбреЗрд╡рд▓рдкрд░реНрд╕ / рдбрд┐рдЬрд╝рд╛рдЗрдирд░ / рд▓реЗрдЖрдЙрдЯ рдбрд┐рдЬрд╝рд╛рдЗрдирд░) рдХреЛ рдкреЗрдЬ / рд▓рд┐рдВрдХ рдХреЛ рдХрд┐рд╕реА рддрд░рд╣ "рд╣рд╛рдЗрд▓рд╛рдЗрдЯ" рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╣реИред

рдореИрдВ Django рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдиреЗрд╡рд┐рдЧреЗрд╢рди рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╕рдордп рдПрдХ рдмрд╣реБрдд рд╣реА рддреБрдЪреНрдЫ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдПрдХ рдЧреИрд░-рддреБрдЪреНрдЫ рд╕рдорд╛рдзрд╛рди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реВрдВред

рдЬреЛ рд░реЛрдЧреА рдирд╣реАрдВ рд╣реИрдВ, рдЙрдирдХреЗ рд▓рд┐рдП рдЖрдк рддреБрд░рдВрдд рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВред

рд╕рдмрд╕реЗ рддреБрдЪреНрдЫ рдирд┐рд░реНрдгрдп


рдкреНрд░рддреНрдпреЗрдХ рджреГрд╢реНрдп рдореЗрдВ рд╣рдо рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЪрд░ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕реЗ "рд╕реНрдерд╛рди" рд╣реЛрдиреЗ рджреЗрдВ рдФрд░ рдлрд┐рд░ рдирд┐рд░реНрджрдпрддрд╛ рд╕реЗ рд╣рд╛рд░реНрдбрдХреЛрдб рдХрд░реЗрдВ:

<ul> <li {% if location=='random_page' %} class="active" {% endif %}> <a href="{% url 'random_page' %}"> {% trans 'random page' %} </a> </li> </ul> 

рдпрд╣ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рд▓рд┐рдВрдХ рдХрд╛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ "рд╕реНрдерд╛рди" рдореВрд▓реНрдп рд╣реИ, рдЬреЛ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдХреЛрдб рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ, рдЬрдм рд▓рд┐рдВрдХ \ view рдХреЛ рдпрд╣ рдпрд╛рдж рд░рдЦрдирд╛ рдЕрд╕рдВрднрд╡ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕ рд▓рд┐рдВрдХ рдХреЛ "рд╕реНрдерд╛рди", рд╕рд╛рде рд╣реА рд╕рд╛рде рдЯрд╛рдЗрдк рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╡реНрдпрдХреНрддрд┐ рдкрд╛рдпрдерди рд▓реЙрдЬрд┐рдХ рдореЗрдВ рджреЗрд░реА рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╕реЗ рдмреЗрд╣рдж рдЕрд╕рдВрддреБрд╖реНрдЯ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рджреЗрдЦреЗрдВ рдФрд░ рд╕рдВрджрд░реНрдн рдореЗрдВ рдХрд╣рд╛рдБ рд╕реЗ рдХреНрдпрд╛ рдореВрд▓реНрдп рд╣реИред

рдЖрдк "рд╕реНрдерд╛рди" рдХреЛ рдЗрд╕ рджреГрд╢реНрдп рдХреЗ рдирд╛рдо рд▓рд┐рдВрдХ рдХреЗ рд╕рдорд╛рди рдкрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдереЛрдбрд╝рд╛ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред

рдПрдХ рд╕рд░рд▓ "рдЯреЗрдореНрдкрд▓реЗрдЯ рдлрд┐рд▓реНрдЯрд░" рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди


рд╕реНрд╡рдпрдВ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░реЗрдВ:

 from django import template register = template.Library() def active(url, request): if url == request.get_full_path(): return True else: return False register.filter('active', active) 

рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ рдЖрдЧреЗ:

 {% load active %} <ul> {% url 'random_page' as random_page %} <li {% if random_page|active:request %} class="active" {% endif %}> <a href="{{ random_page }}"> {% trans 'random page' %} </a> </li> </ul> 

рдЖрдкрдХреЛ рдЕрдм рджреГрд╢реНрдп рдХреЗ рд╕рд╛рде рдЪрд░ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдЖрдк рддреБрд▓рдирд╛ рдХреЛ .startswith () рдХреЗ рд╕рд╛рде рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдирд┐рдпрдорд┐рдд рдХреЗ рд╕рд╛рде рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдореЗрдиреВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ / рдкреГрд╖реНрда / рдореЗрдиреВ / рд╕рдмрдореЗрдиреВ / "рдкрд░ рдПрдХ рд▓рд┐рдВрдХ рдХреЛ" / рдореЗрдиреВ / "рдкрд░ рд▓рд┐рдВрдХ рдХрд░реЗрдВред рд▓реЗрдХрд┐рди рджрд┐рдирдЪрд░реНрдпрд╛ рдЕрднреА рднреА рдпрд╣рд╛рдБ рд╣реИ ...

рдореЗрд░реА рдмрд╛рдЗрдХ - django-activeurl


рдХреЛрдИ рдирд┐рдпрдорд┐рдд рдХреНрд░рд┐рдпрд╛ рдирд╣реАрдВ рд╣реИрдВ, рдЕрд░реНрдерд╛рддреН:

 {% load activeurl %} {% activeurl %} <ul> <li> <a href="{% url 'random_page' %}"> {% trans 'random page' %} </a> </li> </ul> {% endactiveurl %} 

рдХреБрдЫ рдЬрд╛рджреВ ...

 <ul> <li class="active"> <a href="/random_page/"> random page </a> </li> </ul> 

рд╕рднреА рдЕрдЬрдЧрд░ рдмреИрдЯрд░реА рдХреА рддрд░рд╣ рд╕реНрдерд╛рдкрдирд╛:

 pip install django-activeurl 

рд╕рднреА рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдпрд╣рд╛рдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ ред

рдЕрдм, рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛ - рдПрдХ рдкреЗрдбрд╝ lxml рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░реЗрд╖рд┐рдд рдПрдЪрдЯреАрдПрдордПрд▓ рд╕реЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдпрд╣ рдЙрди HTML рддрддреНрд╡реЛрдВ рдХреА рдЦреЛрдЬ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ (рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ "рд▓реА"), рдлрд┐рд░ рдЗрд╕ рдЯреИрдЧ рдореЗрдВ рд╕рднреА рд▓рд┐рдВрдХ рд▓рд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдЙрдирдХреЗ "href" рдкреИрд░рд╛рдореАрдЯрд░ рдХреА рддреБрд▓рдирд╛ рдХреА рдЬрд╛рддреА рд╣реИред "request.get_full_path ()" рдХреЗ рд╕рд╛рдеред

рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ:


рд╕рднреА рдХреЗ рд▓рд┐рдП рдХрдо рдирд┐рдпрдорд┐рдд рдХрд╛рд░реНрдп!

Source: https://habr.com/ru/post/In202842/


All Articles