2009-12-11 6 views
0

나는 장고 프레임 워크의 뒷면에 내장 된 파이썬 웹 사이트를 작성하고 있는데, 나는 현재 링크를 강조 표시하는 방법을 찾고 있는데, 사용자가 URL에 숙부를하고 있다고 생각했다. 이 같은 것이 작동 할 것입니다. 내가 무슨 짓을활성 링크를 활성 링크를 제공

nav라는 새로운 응용 프로그램을 만드는 것입니다 일부 templatetags 내 템플릿에서

from django import template 

register = template.Library() 

URL_PATTERNS = { 
    'home': (r'^/$',), 
} 

@register.tag 
def nav_selection(parser, token): 
    try: 
     tag_name, nav_item = token.split_contents() 
    except ValueError: 
     raise template.TemplateSyntaxError, "%r tag requires a single argument" % token.contents.split()[0] 
    if not (nav_item[0] == nav_item[-1] and nav_item[0] in ('"', "'")): 
     raise template.TemplateSyntaxError, "%r tag's argument should be in quotes" % tag_name 
    return NavSelectionNode(nav_item[1:-1]) 

class NavSelectionNode(template.Node): 
    def __init__(self, nav_item): 
     self.nav_item = nav_item 
    def render(self, context): 
     if not 'request' in context: 
      return "" 
     import re 
     try: 
      regs = URL_PATTERNS[self.nav_item] 
     except KeyError: 
      return '' 
     for reg in regs: 
      if re.match(reg, context['request'].get_full_path()): 
       return "active" 
     return '' 

,과 같이 나는에 나가이

<ul id="navigation">{% load nav %} 
       <li><a href="{% url views.home %}" class='{% nav_selection "home" %}'>home</a></li> 
       <li><a href="{% url views.about %}" class='{% nav_selection "about" %}'>about neal &amp; wolf</a></li> 
       <li><a href="{% url shop.views.home %}" class='{% nav_selection "shop" %}'>our products</a></li> 
       <li><a href="{% url shop.views.home %}" class='{% nav_selection "shop" %}'>shop</a></li> 
       <li><a href="{% url views.look %}" class='{% nav_selection "look" %}'>get the look</a></li> 
       <li><a href="{% url news.views.index %}" class='{% nav_selection "news" %}'>news</a></li> 
       <li><a href="{% url contact.views.contact %}" class='{% nav_selection "contact" %}'>contact us</a></li> 
       <li><a href="{% url store_locator.views.index %}" class='{% nav_selection "finder" %}'>salon finder</a></li> 
       <li><a href="{% url professional.views.index %}" class='{% nav_selection "contact" %}'>neal &amp; wolf professional</a></li> 

      </ul> 

아직 마크 업을 내장 이 예제에서는 방화 광이 있습니다. 인덱스 페이지를 탐색 중입니다.

<a class="" href="/home/"> 

So 뭔가 분명히 실패하고 있지만 어디에서 볼 수 없는데, 누구든지 나를 도울 수 있습니까?

답변

0

어떤 것들은 확인 :

request 목적은 당신의 맥락에서 사실인가? 구체적으로 전달하고 있습니까, 아니면 RequestContext을 사용하고 있습니까?

왜 내장 태그 reverse 함수를 사용하여 urlconf에서 정규식을 찾으려면 templatetags에 정규식을 정의합니까?

여기서 정규 표현식은 urlconf의 정규 표현식과 실제로 일치합니까?

'홈'URL 아래에 home urlconf를 포함 시켰습니까?

+0

미안 해요. 정말 두껍습니다. 파이썬에 관해서는 2 주 정도 밖에 걸리지 않습니다. 이건 내 코드가 아니야, 내가 상속 받았어, 더 간단한 방법이 있니? 요청 객체의 내용을 보려면 어떻게해야합니까? 마지막 매개 변수가 RequestContext 인 경우 render_to_response가 무엇을 의미합니까? 바보 같아서 미안해. – Udders

관련 문제