2013-07-01 2 views
0

나는 mako에서 사소한 것이 틀림 없다고 생각하지만, 나는 어떻게해야 하는지를 알 수 없다. 문서를 꽤 쓸모 없게 만든다. 저는 파이썬과 DTL에 대해 잘 알고 있습니다 만, 왜이 코드가 구문 오류를 던지고 있는지 이해할 수 없습니다.mako 템플릿을 사용하는 데있어서의 트러블

기본적으로 원하는 것은 데이터 개체 (단지 작은 사전)를 가져 와서 요청이 어디에서 왔는지에 따라 링크를 다르게 생성하는 것입니다. 직선적 인 파이썬에서 이것을 수행하고 컨텍스트로 전달하는 것은 사소한 일이지만, 나는 정말 mako로 워밍업하려고합니다. 어떤 도움이라도 대단히 감사 할 것입니다.

<%def name="courseware_link(datum)"> 
    % if courseware in ${request.url}: 
     <a href=${request.url}[:${request.url}.find("courseware")+len("courseware")+1]+datum["url"]> 
    % else: 
     <a href=${request.host}+"/courses/"+datum["org"]+"/"+datum["course_ids"]+"/#/courseware/"+datum["url"] 
    % endif 
</%def> 

는 구체적 구문 오류는 이것이다 :

(SyntaxError) invalid syntax (<unknown>, line 1) (u'if courseware in ${request.url}:pass') in file '/file' at line: 70 char: 1 

라인 (70)는 두 번째 줄 % if courseware...

+0

어, 오류가 무엇인가요? – Marcin

+0

@Marcin 구문 오류입니다. para 1의 끝 부분을 참조하십시오. –

+0

오류와 코드가 동기화되지 않습니다. 나는 그들이 같지 않다고 생각한다. – karthikr

답변

1

당신은 만약 조건 모두 a에서 일반 파이썬과 $를 {} 혼합되어있다 태그. 또한 $ {} 안에 $ {}을 중첩 할 수 없습니다. 당신은 아마 템플릿에서 또는 <%의 %> 블록으로 하나가이 코드를 리팩토링해야하지만,이 같은 작업을해야합니다 : 또한

<%def name="courseware_link(datum)"> 
    <%  
    if "courseware" in request.url: 
     url = request.url[:request.url.find("courseware")+len("courseware")+1] 
     url += datum["url"] 
    else: 
     url = request.host + "/courses/" + datum["org"] + "/" 
     url += datum["course_ids"] + "/#/courseware/" + datum["url"] 
    %> 
    <a href="${url}"> 
</%def> 

:

여기
%if "courseware" in request.url: 
<a href="${request.url[:request.url.find('courseware')+len('courseware')+1]+datum['url']}"> 
%else: 
    <a href="${request.host + '/courses/' + datum['org'] + '/' + datum['course_ids'] + '/#/courseware/' + datum['url']}"> 
%endif 

가 리팩토링 버전입니다 당신은 라우팅 패키지를 사용하여 직접 생성하지 않고 URL을 생성 할 수 있습니다. Django는 URL을 자동으로 생성하기 위해 뭔가를 제공해야합니다.

관련 문제