[bottle] TEMPLATE_PATH will nicht

Django, Flask, Bottle, WSGI, CGI…
Antworten
rope
User
Beiträge: 2
Registriert: Montag 19. April 2010, 15:00

Da dies mein erstes Posting hier ist,
erstmal hallo an alle :)

Ich hab ein kleines Problem mit bottles TEMPLATE_PATH.
Die version von bottle ist 0.64

die Ordnerstructur sieht so aus:
/pfad/zum/bottle/root/bottle.py
/pfad/zum/bottle/root/site.py
/pfad/zum/bottle/root/models.py
/pfad/zum/bottle/root/admin/site.py
/pfad/zum/bottle/root/admin/settings.py
/pfad/zum/bottle/root/admin/views

in views sollen die templates für den admin liegen,
trotz hin und her kann ich bottle allerdings nicht dazu bewegen,
davon welche zu finden.

der fehler des servers lautet:

Code: Alles auswählen

Unhandled Exception: IOError(2, 'No such file or directory')
localhost - - [19/Apr/2010 15:48:40] "GET /admin HTTP/1.1" 500 395
^CShutting Down...
site.py:

Code: Alles auswählen

from bottle import route, run
from models import Test
from admin.site import setup_route 

setup_route('/admin')
run()
models.py

Code: Alles auswählen

from elixir import Entity, Field, Unicode, UnicodeText
from admin.site import register 


class Test(Entity):
    test_name = Field(Unicode(30))
    test_text = Field(UnicodeText)

    def __unicode__(self):
        return self.test_name

register(Test)
admin/site.py

Code: Alles auswählen

import bottle
from bottle import route
from bottle import jinja2_view as view

import settings


SUPPORTED_DATABASES = ["sqlite"]
def _connect_db():
    metadata.bind = settings.DATABASE_ENGINE + ":///" + settings.DATABASE_NAME
    metadata.echo = settings.DEBUG


def _setup_db():
    setup_all()
    create_all()


def _add_template_path():
    path = os.path.append(os.path.join("./", "admin/views/"))
    bottle.TEMPLATE_PATH.insert(0, path)
    print bottle.TEMPLATE_PATH



MODELS = []
def register(model):
    if not model in MODELS:
        MODELS.append(model)



def setup_route(base_route):
        
    _connect_db()
    _setup_db()
    _add_template_path()

    @route(base_route)
    @view("overview.tpl")
    def site():
        return {"models": MODELS}
und natürlich die admin/settings.py

Code: Alles auswählen

DEBUG = True

DATABASE_ENGINE = "sqlite" # at time only sqlite is supported
DATABASE_NAME = "test.db" # the name of the db
Ich habe schon mehrfach rumprobiert, aber der Fehler bleibt der gleiche,
vielleicht kann mir ja jemand auf die Sprünge helfen.

thx rope
ms4py
User
Beiträge: 1178
Registriert: Montag 19. Januar 2009, 09:37

Das erklärt eigentlich alles.
http://bottle.paws.de/docs/tutorial.htm ... earch-path

Eine Lösung wäre also
1) Endung .tpl weglassen und
2) "./admin/views/%s.tpl" zum bottle.TEMPLATE_PATH hinzufügen
„Lieber von den Richtigen kritisiert als von den Falschen gelobt werden.“
Gerhard Kocher

http://ms4py.org/
rope
User
Beiträge: 2
Registriert: Montag 19. April 2010, 15:00

habs jetzt nochmal probiert, funzt leider so aber auch nicht,
hab langsam das gefühl, dass da mit bottle was nicht stimmt,

hab die datei von der seite runtergeladen,
ich versuchs nochmal mit easy_install und schau dann weiter


...
hatte jetzt doch erfolg,
und zwar muss das ganze in etwa so aussehen,
sonst gehts nicht

Code: Alles auswählen

bottle.TEMPLATE_PATH.append("./admin/views/")

@views("overview")
@route("die_route"):
    return {"models": MODELS}
also ohne %s.tpl beim path
und ohne .tpl beim decorator
Antworten