get Variable in Python bottle

Django, Flask, Bottle, WSGI, CGI…
Antworten
djevil
User
Beiträge: 58
Registriert: Montag 22. August 2016, 14:28

Hallo,

ich fange gerade mit Python bottle an.

Ich möchte einfach eine Variable an die URL hängen, und damit dieselbe Seite aufrufen.

Ich habe eine server.py

Code: Alles auswählen

@app.route('/')
def serve_site():
    return template('content.tpl')
und die content.tpl:

Code: Alles auswählen

%if name != "":
	<h1>Content: {{ name }}<h1><p />
% end

<a href="name=Jan">
	<img src="/icons/head.png" width="100%">
</a>
Wie muss ich das korrekt aufrufen?

Mfg d
Zuletzt geändert von Anonymous am Freitag 13. Januar 2017, 12:32, insgesamt 1-mal geändert.
Grund: Quelltext in Codebox-Tags gesetzt.
Benutzeravatar
noisefloor
User
Beiträge: 3854
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

soll die Variable `name` Teil der Route sein oder willst du die als GET-Parameter übergeben? Das ist nicht das gleich bzw. der Zugriff funktioniert darauf dann anders.

Bei der Route muss du die Route halt mit einem Platzhalter für die Variable ausstatten, bei GET sind die Schlüssel-Werte Paare in `request.query` gespeichert (siehe http://www.bottlepy.org/docs/dev/tutori ... -variables).

Dein Template funktioniert so nicht, weil die `name` nicht ans Template übergibst. Außerdem ist `<a href="name=Jan">` kein gültiger Link.

Gruß, noisefloor
djevil
User
Beiträge: 58
Registriert: Montag 22. August 2016, 14:28

Danke, mit der get -Methode funktioniert es nun.

Wie geht es mit der route Methode?

Habe jetzt: server.py

Code: Alles auswählen

## as Route
@route('/index/<newid2>/<newpage2>')
def index():
    return template('content.tpl',  id2=newid2, page2=newpage2)
content.tpl

Code: Alles auswählen

<h1>Hello {{ id2 }}</h1>
<a href="/index/newid2/newpage2">
   <img src="/icons/firefox.png" width="10%">
</a>

MfG. d
Zuletzt geändert von Anonymous am Freitag 13. Januar 2017, 17:03, insgesamt 1-mal geändert.
Grund: Quelltext in Codebox-Tags gesetzt.
djevil
User
Beiträge: 58
Registriert: Montag 22. August 2016, 14:28

Ok, mit

Code: Alles auswählen

@route('/index')
@route('/index/<name>')
def index(name=None):
    return template('content.tpl', name=name)

geht es ;)

Schönes Wochenende!
Zuletzt geändert von Anonymous am Freitag 13. Januar 2017, 17:04, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Codebox-Tags gesetzt.
Antworten