Я создаю простую веб-страницу, используя CherryPy и Jinja2
Файл питона веб-сервера:
import cherrypy
from jinja2 import Environment, FileSystemLoader
from soltyslib import listFiles
env = Environment(loader=FileSystemLoader('templates'))
class HelloWorld(object):
@cherrypy.expose
def index(self):
template = env.get_template('index.html')
result = template.render(name='Pawel',files=listFiles('templates'))
return result
cherrypy.quickstart(HelloWorld())
Файл шаблона:
Hello {{name}}!
<ul>
{% for file in files %}
<li>{{file}}</li>
{% endfor %}
</ul>
Хорошо, и затем я запускаю веб-сервер, Я перехожу к 127.0.0.1:8080 и вижу ожидаемый результат:
Hello Pawel!
- templates \ index.html
- templates \list.html
Но затем я нажимаю кнопку обновления в браузере, и вот результат:
Hello Pawel!
- templates\ index.html
- templates \ list.html
- templates \ index.html
- templates \ list.html
Почему?цикл снова оценивается?Как предотвратить это?
А если кому-то интересно, как выглядит функция listFiles:
import os,sys
from collections import deque
def listFiles(cdir, fileslist=[]):
basedir = cdir
queuedir = deque()
queuedir.append(basedir)
while len(queuedir) > 0:
currentbase = queuedir.popleft()
for f in os.listdir(currentbase):
f = os.path.join(currentbase,f)
if os.path.isdir(f):
queuedir.append(f)
else:
fileslist.append(f)
return fileslist