2017-12-30 31 views
1

HTMLBottle (Python)으로 웹 스토어를 만들고 있습니다. 나는 HTMLPython 사이의 데이터를 전달하는 방법뿐만 아니라 HTML (참조 : http://karrigell.sourceforge.net/en/pythoninsidehtml.html) 내에 Python 코드를 작성하는 방법을 알고 있습니다.전달 된 변수와 함께 HTML 내부에 파이썬 코드 결합

내가 고민하는 내용은 HTML에서 Python으로 전달되는 참조 내에 Python 코드를 쓰는 것입니다.

많은 이미지가 있기 때문에 데이터베이스에서 이미지를로드합니다. 내가 설정하고이 같은 HTML에 변수를 image_name(index) 전달합니다

@get('/store') 
def showStore(): 
    images = models.images() # reads from database 
    data = ', number_of_images={}'.format(len(images)) 

    for (id, title, path) in images: 
     data += ', image_name{}={}, '.format(id, path) 
     data += 'image_title{}={}'.format(id, title) 

    return template('store.html' + data) 

store.html의 관련 부분 : HTML{{image_title}}가에서 전달 된 값을 가져옵니다 Bottle 이후

<!-- Portfolio Gallery Grid --> 

<div class="row"> 
    <% for i in range(1, number_of_images+1): %> 
     <div class="column"> 
     <div class="content"> 
      <img src="static/images/{{image_name<%i%>}}.jpg"> 
      <h3> {{image_title<%i%>}} </h3> 
     </div> 
     </div> 
    <% end %> 
</div> 

가 잘 알려져 있지 않다 template (html, variables). 블록 <% %>을 사용하면 코드 안에 Python 코드를 쓸 수 있습니다.

{{image_title<%i%>}} 

<%i%> 내 의견에를 만들어야합니다 : 나는 그래서, HTML 내부 HTML을 이미지 속성의 색인을 사용하지 않았고 for loop이 작업을 수행 할 때

모든 것이 제대로 작동 문제는이 부분이다 변수 image_titlei하지만 분명히 그렇지 않습니다.

나는 .py 파일에서 전달하는 변수가 HTML에 존재하지 않기 때문에 template not found 오류가 발생합니다.

모든 이미지를 하드 코딩하는 대신이 작업을 동적으로 수행하는 이유는 이미지가 많이 있고 각 이미지에 전체 관련 테이블 데이터가 있기 때문입니다. 이미지의 이름과 제목과 같은 방식입니다.

내가 정말하고 싶은 이후 적절한이 전달 변수 HTML 내부 Python을 결합 어떤 도움을 주셔서 감사합니다 것

동적

답변

4

잘못 여기에 사물의 다소 큰이 될 것입니다.

템플릿을 찾을 수 없음 오류는 실제로 템플릿 내에서 수행하는 이상한 조작과는 관련이 없습니다. 파이썬 코드의 마지막 줄에있는 template()에 대한 호출에서 템플릿 이름을 data 문자열로 연결하기 때문입니다. 내가 병 모르겠지만, 나는 데이터가 함수에 두 번째 매개 변수가 될 필요가 절대적으로 확실 해요 : 나머지에 관해서는

return template('store.html', data) 

, 당신이 일을 아무것도 할 필요가 전혀 없습니다. 이미지를 목록으로 전달하고 템플릿의 해당 목록을 반복합니다. 동적 변수는 이고 항상입니다. 이는 표준 파이썬 코드와 마찬가지로 템플릿에도 똑같이 적용됩니다.

(비록 동적 변수를 만들지 않고 하나의 문자열 만 가지면 변수 할당과 모양이 같지만 실제로는 변수를 할당하지 않습니다.)

+0

목록 자체를 전달할 수 있음을 알지 못했습니다. 감사합니다. :) – Larisa