আমি উপরে ১১১ জের পরিষ্কারতা পছন্দ করেছি তাই আমি এর বেশিরভাগ অংশ নিয়েছি এবং এটির সাথে আমার যে 3 টি সমস্যা ছিল তা সমাধান করার জন্য পুনরায় ব্যবহার করেছি:
- নিয়মিত এক্সপ্রেশনটি অন্য সবার বিপরীতে 'হোম' url এর সাথে মিলছিল
- আমার একটি নেভিগেশন ট্যাবে ম্যাপযুক্ত একাধিক ইউআরএল প্রয়োজন ছিল , সুতরাং আমার আরও জটিল ট্যাগের প্রয়োজন যা পরিবর্তনশীল পরিমাণের পরামিতি নেয়
- কিছু ইউআরএল সমস্যা স্থির করে
এটা এখানে:
tags.py:
from django import template
register = template.Library()
@register.tag
def active(parser, token):
args = token.split_contents()
template_tag = args[0]
if len(args) < 2:
raise template.TemplateSyntaxError, "%r tag requires at least one argument" % template_tag
return NavSelectedNode(args[1:])
class NavSelectedNode(template.Node):
def __init__(self, patterns):
self.patterns = patterns
def render(self, context):
path = context['request'].path
for p in self.patterns:
pValue = template.Variable(p).resolve(context)
if path == pValue:
return "active" # change this if needed for other bootstrap version (compatible with 3.2)
return ""
urls.py:
urlpatterns += patterns('',
url(r'/$', view_home_method, {}, name='home_url_name'),
url(r'/services/$', view_services_method, {}, name='services_url_name'),
url(r'/contact/$', view_contact_method, {}, name='contact_url_name'),
url(r'/contact/$', view_contact2_method, {}, name='contact2_url_name'),
)
base.html:
{% load tags %}
{% url home_url_name as home %}
{% url services_url_name as services %}
{% url contact_url_name as contact %}
{% url contact2_url_name as contact2 %}
<div id="navigation">
<a class="{% active request home %}" href="home">Home</a>
<a class="{% active request services %}" href="services">Services</a>
<a class="{% active request contact contact2 %}" href="contact">Contact</a>
</div>
<a href="{% url "view:name" %}" {% active_class "view:name" %}>
। আপনি ঐচ্ছিকভাবে এটি ব্যবহার জেনারেট করতে পারবেন না শুধু" active"
মান (ক্ষণস্থায়ী দ্বারাFalse
একটি বিদ্যমান ক্লাসটি লিখবেন যাও ট্যাগ করতে দ্বিতীয় যুক্তি হিসেবে), কিন্তু অধিকাংশ এনএভি লিঙ্কের জন্য উদাহরণ আমি যা ব্যবহার হয়।