2013-02-24 10 views
14

użyć kolby i mam ten błąd, gdy zgłoszę URL: /login Oto moja metoda logowanie:jinja2.exceptions.TemplateNotFound błąd

@app.route('/login') 
def login(): 
    if authenticateForPanel(): 
     return redirect(url_for("panel")) 
    else: 
     getParam = request.args.getlist('redirect_uri') 
     if getParam: 
      ref =getParam[0] 
     else: 
      ref="/panel" 
     return render_template(themesDir + g.blogOptions['active_theme']+'/login.html', blogOptions = g.blogOptions, ref=ref) 

A traceback:

Traceback (most recent call last): 
    File "/Users/ozcan/Library/Python/2.7/lib/python/site-packages/flask/app.py", line 1701, in __call__ 
    return self.wsgi_app(environ, start_response) 
    File "/Users/ozcan/Library/Python/2.7/lib/python/site-packages/flask/app.py", line 1689, in wsgi_app 
    response = self.make_response(self.handle_exception(e)) 
    File "/Users/ozcan/Library/Python/2.7/lib/python/site-packages/flask/app.py", line 1687, in wsgi_app 
    response = self.full_dispatch_request() 
    File "/Users/ozcan/Library/Python/2.7/lib/python/site-packages/flask/app.py", line 1360, in full_dispatch_request 
    rv = self.handle_user_exception(e) 
    File "/Users/ozcan/Library/Python/2.7/lib/python/site-packages/flask/app.py", line 1358, in full_dispatch_request 
    rv = self.dispatch_request() 
    File "/Users/ozcan/Library/Python/2.7/lib/python/site-packages/flask/app.py", line 1344, in dispatch_request 
    return self.view_functions[rule.endpoint](**req.view_args) 
    File "/Users/ozcan/Documents/python/app.py", line 209, in login 
    return render_template(themesDir + g.blogOptions['active_theme']+'/login.html', blogOptions = g.blogOptions, ref=ref) 
    File "/Users/ozcan/Library/Python/2.7/lib/python/site-packages/flask/templating.py", line 124, in render_template 
    return _render(ctx.app.jinja_env.get_or_select_template(template_name_or_list), 
    File "/Users/ozcan/Library/Python/2.7/lib/python/site-packages/jinja2/environment.py", line 758, in get_or_select_template 
    return self.get_template(template_name_or_list, parent, globals) 
    File "/Users/ozcan/Library/Python/2.7/lib/python/site-packages/jinja2/environment.py", line 719, in get_template 
    return self._load_template(name, self.make_globals(globals)) 
    File "/Users/ozcan/Library/Python/2.7/lib/python/site-packages/jinja2/environment.py", line 693, in _load_template 
    template = self.loader.load(self, name, globals) 
    File "/Users/ozcan/Library/Python/2.7/lib/python/site-packages/jinja2/loaders.py", line 115, in load 
    source, filename, uptodate = self.get_source(environment, name) 
    File "/Users/ozcan/Library/Python/2.7/lib/python/site-packages/flask/templating.py", line 61, in get_source 
    raise TemplateNotFound(template) 
TemplateNotFound: static/themes/default/login.html 

jestem absolutnie pewny, że istnieje login.html (static/themes/default/404.html). Dlaczego tak się dzieje?

Odpowiedz

3

Myślę, że nie powinieneś uprzedzać themesDir. Przekazujesz nazwę pliku tylko do kolb, a następnie zajrzysz do folderu o nazwie templates w odniesieniu do twojego pliku Pythona.

+0

Nie, to nie działa, błąd mówi dokładnie ten sam katalog, w którym istnieje plik – saidozcan

+1

Nie powinieneś umieszczać swojego motywu w folderze '' static''! W przeciwnym razie każdy będzie mógł pobrać szablony! –

+0

moim celem jest, że foldery zasobów muszą znajdować się w każdym motywie. Nie mogłem tego zrobić w żaden inny sposób. Oto mój problem: http://stackoverflow.com/questions/15027930/changing-assets-folder-directory-in -flask – saidozcan

21

Umieszczasz szablon w niewłaściwym miejscu. Z dokumentacji Flask:

Kolba będzie szukać szablonów w folderze szablonów. Jeśli więc twoja aplikacja jest modułem, ten folder znajduje się obok tego modułu, jeśli jest to pakiet, który znajduje się w twoim pakiecie: Zobacz dokumentację, aby uzyskać więcej informacji: http://flask.pocoo.org/docs/quickstart/#rendering-templates

+1

to mi się udało ... Dziękuję @Majid – omah94