2016-04-09 9 views
0

Ich übergebe eine Liste von Strings aus meiner Kolben-App an die HTML-Vorlage, was völlig in Ordnung ist, bis ich versuche, die Liste anzufügen. Ich habe meine Verwendung der Append-Methode mit einem clientseitigen Python-Skript getestet und es funktioniert. Ich bin perplex darüber, warum das Anhängen der Liste einen internen Serverfehler verursacht. Hier ist der Abschnitt meiner Vorlage, die verwendet die ParameterBluemix Python Flask App übergibt Listenparameter an Vorlage mit list.append()

<ul> 
    {% for file in files %} 
    <li>{{ file }}</li> 
    {% endfor %} 
</ul> 

Und hier ist die Strecke in meinem Kolben app

@app.route('/') 
def main(): 
    FILES = [ 'test1', 'test2' ] 

    # Iterate through each file in the cloud storage container 
    for container in conn.get_account()[1]: 
     for data in conn.get_container(container['name'])[1]: 
      print 'object: {0}t size: {1}t date: {2}'.format(data['name'], data['bytes'], data['last_modified']) 
      FILES.append('test3') 
    return render_template('index.html', files = FILES) 

Die Linie FILES.append (‚test3‘) das Problem verursacht, aber ich Ich bin mir nicht sicher warum. Wenn ich diese Zeile kommentiere, wird die Liste wie erwartet an die Vorlage übergeben.

Hier ist das vollständige Zurückverfolgungs

Traceback (most recent call last): 
    File "/home/vcap/app/.heroku/python/lib/python2.7/site-packages/flask/app.py", line 1836, in __call__ 
    return self.wsgi_app(environ, start_response) 
    File "/home/vcap/app/.heroku/python/lib/python2.7/site-packages/flask/app.py", line 1820, in wsgi_app 
    response = self.make_response(self.handle_exception(e)) 
    File "/home/vcap/app/.heroku/python/lib/python2.7/site-packages/flask/app.py", line 1403, in handle_exception 
    reraise(exc_type, exc_value, tb) 
    File "/home/vcap/app/.heroku/python/lib/python2.7/site-packages/flask/app.py", line 1817, in wsgi_app 
    response = self.full_dispatch_request() 
    File "/home/vcap/app/.heroku/python/lib/python2.7/site-packages/flask/app.py", line 1477, in full_dispatch_request 
    rv = self.handle_user_exception(e) 
    File "/home/vcap/app/.heroku/python/lib/python2.7/site-packages/flask/app.py", line 1381, in handle_user_exception 
    reraise(exc_type, exc_value, tb) 
    File "/home/vcap/app/.heroku/python/lib/python2.7/site-packages/flask/app.py", line 1475, in full_dispatch_request 
    rv = self.dispatch_request() 
    File "/home/vcap/app/.heroku/python/lib/python2.7/site-packages/flask/app.py", line 1461, in dispatch_request 
    return self.view_functions[rule.endpoint](**req.view_args) 
    File "/home/vcap/app/server.py", line 93, in main 
    for container in conn.get_account()[1]: 
    File "/home/vcap/app/.heroku/python/lib/python2.7/site-packages/swiftclient/client.py", line 1615, in get_account 
    full_listing=full_listing) 
    File "/home/vcap/app/.heroku/python/lib/python2.7/site-packages/swiftclient/client.py", line 1553, in _retry 
    self.url, self.token = self.get_auth() 
    File "/home/vcap/app/.heroku/python/lib/python2.7/site-packages/swiftclient/client.py", line 1507, in get_auth 
    timeout=self.timeout) 
    File "/home/vcap/app/.heroku/python/lib/python2.7/site-packages/swiftclient/client.py", line 617, in get_auth 
    auth_version=auth_version) 
    File "/home/vcap/app/.heroku/python/lib/python2.7/site-packages/swiftclient/client.py", line 517, in get_auth_keystone 
    ksclient, exceptions = _import_keystone_client(auth_version) 
    File "/home/vcap/app/.heroku/python/lib/python2.7/site-packages/swiftclient/client.py", line 502, in _import_keystone_client 
    variables to be set or overridden with -A, -U, or -K.''') 
ClientException: 
Auth versions 2.0 and 3 require python-keystoneclient, install it or use Auth 
version 1.0 which requires ST_AUTH, ST_USER, and ST_KEY environment 
variables to be set or overridden with -A, -U, or -K. 

Scheint, wie das Anfügen nicht einen Fehler verursacht, aber man auszusetzen. Ich werde aktualisieren, sobald dies sortiert ist.

+0

Was ist der tatsächliche Fehler? Bitte bearbeiten Sie Ihre Frage so, dass sie den vollständigen Traceback enthält. Wenn Sie nicht sicher sind, wo Sie es finden können, überprüfen Sie Ihre Protokolle oder aktivieren Sie den Debug-Modus. – dirn

Antwort

0

Wie unten im Traceback angegeben, fehlte der Python-Keystoneclient sowohl in meinen Anwendungsanforderungen als auch in den Importanweisungen.

Ich reparierte diese durch

python-keystoneclient 

meinen requirements.txt Zugabe (die für den Python-Heroku-buildpack die Anforderungen Datei), die mich dann den Import meines Flask App

hinzufügen
import keystoneclient.v3 as keystoneclient