2010-12-02 4 views
0

내 페이지에서 투표 가능성이 있습니다. 각 개체는 페이스 북의 'Like'버튼으로 좋아할 수 있습니다. 항목이 이미 마음에 들면 버튼을 숨기고 싶습니다. 그래서 나는 주어진 IP를 가진 사용자가 이미 투표했는지 확인하기 위해 좋아하는 객체의 메소드를 작성했습니다. IP는 컨텍스트 변수에 저장됩니다.if 문 템플리트 오류에서 'not'가 올 것으로 예상

def artifact_finalists(request):   
    submissions = ArtifactSubmission.objects.filter(resized=True, final=True) 
    template_name = 'rte/artifact_finalists.html' 
    return render_to_response(template_name, {"submissions": submissions, 'voting': voting,}, context_instance=RequestContext(request)) 

그리고 템플릿 :

def check_vote(self, ip): 
    id = self.id 
    logging.debug("id: %s, ip: %s" % (id, ip)) 
    try: 
     voted = Vote.objects.get(uid=id, ip=ip) 
     return False 
    except: 
     logging.debug("returning True") 
     return True 

여기 내보기의

{% for submission in submissions %} 
     <li style="float:left, width:400px, margin-right:20px"> 
      <div class="single-submission"> 
       <div style="float:left, margin-right:10px"> 
        <img src="{{ submission.url100 }}" width="100px" /> 
       </div> 
       <div style="float:left"> 
        <span style="float:left">{{ submission.name }}</span> 
        <span style="float:left">{{ submission.description }}</span> 
       </div> 
       <div class="vote"> 
        {% if submission.get_vote IP_ADDRESS %} 
         <script src="http://connect.facebook.net/en_US/all.js#xfbml=1"></script><fb:like layout="button_count" href="http://ntt.vipserv.org{{submission.get_absolute_url}}"></fb:like> 
        {% endif %}     </div> 
      </div> 
     </li> 
    {% endfor %} 

그러나 제기 Expected 'not' in if statement. 어떤 아이디어? 'if'태그에 'not'를 추가하면 improperly formatted이됩니다./

+0

사용자 정의 필터로 해결, 나중에 게시 할 예정입니다. – owca

답변

2

템플릿의 if 문에 연산자가 누락 된 것 같습니다.

{% if submission.get_vote IP_ADDRESS %} 

submission.get_vote (what to) IP_ADDRESS? 아마 ==?

if이 템플릿에서 허용하는 목록을 보려면 Django template docs을 참조하십시오.

또한 IP_ADDRESS가 무엇인지 분명하지 않습니다. REMOTE_ADDR을 의미합니까, 아니면 이미 가지고있는 IP 주소를 어떻게 든 참조 할 수 있습니까?

또한 베어 키 (except:)를 사용하지 않는 것이 좋습니다. 특별히 생각하고있는 예외에 국한하십시오. 예외를 지정하지 않으면 다른 오류를 숨길 수 있습니다. 나는

from django.core.exceptions import ObjectDoesNotExist 

과 check_vote 방법에서 다음

except ObjectDoesNotExist: 

를 추가하는 것이 좋습니다.

check_vote는 어디에서 호출 되었습니까?

+0

빌어 먹을 철자가 틀린 것 같습니다./도움을 받아서 고맙습니다. – owca