python internet

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
ostmob
User
Beiträge: 6
Registriert: Donnerstag 29. November 2012, 22:42

hallo. ich bin neu in python, aber kann eig gut programmieren.

ich habe das problem, dass ich eine internetseite erstellen muss, auf der man per checkbox etwas auswählt, und dann per button ein bild angezeigt werden soll. Eig ganz simple. Nur hab ich das INternet komplett abgesucht und nichts passendes gefunden. ICh bin auf lösungen wie pycherry gekommen ( ist das eine lösung?), wollte aber eig nichts extra installieren oder so. dann hab ich was mit (in python bereits vorhandenen) cgi(o.ä.) gefunden. aber nicht zum laufen bekommen. Wenn mir jemand links schickt, ist das auch schon sehr hilfreich. ich verzweifel langsam^^

Wie ist denn die allgemeine herangehensweise? Reicht es wenn, ich 2 html-dateien mit einem Skript erstellte? oder brauch ich einen internetapplication oder wie geht das allgemein? ich find dazu so wenig :(

gruß ostmob
Benutzeravatar
Sr4l
User
Beiträge: 1091
Registriert: Donnerstag 28. Dezember 2006, 20:02
Wohnort: Kassel
Kontaktdaten:

Wenn es dir nur darum geht, und das die Aufgabe gelöst wird.
Dann HTML + JavaScript und fertig.

Wenn es Python sein muss und du nichts installieren willst könntest du das Problem per wsgiref lösen.

Ansonsten nutzt du eine der vielen WSGI konformen Bibliotheken.
ostmob
User
Beiträge: 6
Registriert: Donnerstag 29. November 2012, 22:42

ja es darf nur python sein^^

wsgi. alles klar danke!
BlackJack

@ostmob: Die beiden verbreitetsten Microwebrahmenwerke sind Bottle und Flask. Bottle steckt in einer einzelnen Datei und kann neben den eigenen Modulen im Verzeichnis liegen.
ostmob
User
Beiträge: 6
Registriert: Donnerstag 29. November 2012, 22:42

ssuuuper tipp mit bottle...herzlichen dank^^ hab alles geschafft :)
ostmob
User
Beiträge: 6
Registriert: Donnerstag 29. November 2012, 22:42

ich bins wieder :)

bottle ist ne super sache, wenn man es beherrscht^^
Hat schonmal jemand veruscht damit ein Bild vom Rechner (gleiches Verzeichnis wie **.py) anzeigen zu lassen? Ich bekomm das nicht hin. ich hab mich soweit belesen, dass das mit static_routes gehen soll. Aber hinbekommen hab ich es nicht. Kann mir da jemand ein kleines Bsp zeigen? Und außerdem bekomm ich es auch nicht hin einen Button, der eine Seite zurück geht, in die internetseite einzubauen. Die Doku find ich recht sparsam.

Gruß ostmob
Benutzeravatar
jbs
User
Beiträge: 953
Registriert: Mittwoch 24. Juni 2009, 13:13
Wohnort: Postdam

[url=http://wiki.python-forum.de/PEP%208%20%28%C3%9Cbersetzung%29]PEP 8[/url] - Quak!
[url=http://tutorial.pocoo.org/index.html]Tutorial in Deutsch[/url]
ostmob
User
Beiträge: 6
Registriert: Donnerstag 29. November 2012, 22:42

ich bekomms nicht hin mit dem Bild -.-

Code: Alles auswählen

import os
import sys
from operator import itemgetter
from bottle import static_file

ROOT = os.path.dirname(os.path.abspath(__file__))

from bottle import route, run, template
from bottle import get, post, request

def main():

    #creates a form, based on SQL-Server
    login_form()
    
    #starts an lokal server
    run(host='localhost', port=8080)
    
    #
    login_submit()
    
    print "success!"
    
    
@route('/login')
def login_form():
        
    i = 0
    
    form_string = '''<form method="POST" action="/login">''

    while i< len(sensors):
        modified = ('<INPUT TYPE="CHECKBOX" NAME="sensor" VALUE="%s"> %s <br>' % (sensors[i], sensors[i]))
        form_string = form_string + "".join(modified)
        i = i + 1
        
    form_string = form_string + '''<input type="submit" value="Zeige_Bild"</p><br><br></form>'''
        
#    return form_string

@route('/login', method='POST')
def login_submit():
    
    return send_image(Chart)

@route('/images/<filename:re:.*\.png>#')
def send_image(filename):
    return static_file(filename, root= ROOT, mimetype='image/png')


Der zeigt das Bild nicht, bzw gibt fehlermeldung, dass zu wenig argumente an send_image(*) übergeben werden -.-
Das Image ist heißt Chart.png und ist im gleichen ordner (ROOT)
Zuletzt geändert von Anonymous am Donnerstag 13. Dezember 2012, 11:02, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Code-Tags gesetzt.
Benutzeravatar
Sr4l
User
Beiträge: 1091
Registriert: Donnerstag 28. Dezember 2006, 20:02
Wohnort: Kassel
Kontaktdaten:

Bitte benutzt die [ python ] [/ python ] tags.

Ruf mal in deinem Browser http://localhost:8080/images/Chart.png auf.

Das bindest du per img tag in deinem HTML ein und nicht die Funktion send_img().


Und du würdest dir selber einen gefallen tun wenn du Templates nutzt und nicht alles im Python Code zusammen baust, egal wie klein das Projekt auch ist.
ostmob
User
Beiträge: 6
Registriert: Donnerstag 29. November 2012, 22:42

Hey danke für deine anteilnahme.
also wenn ich send_image über return zurückgebe, zeigt er eine neue Seite mit dem Bild. Wenn ich die Seite eingebe( ../images/Chart.png) dann findet er aber nichts.
Nun will ich aber noch text unter dem Bild eingeben, das wäre Super :/ wie bekomm ich das hin? ( Hätte auch einfach den Link zum Bild angegeben, aber da findet er ja nichts :( )

templates werde ich mir jetzt mal anschauen. danke für den TIP!
BlackJack

@ostmob: Was ist das denn jetzt für ein Quelltext? Wahrscheinlich nicht der, den Du tatsächlich verwendest. Bei Quelltext ist es sehr hilfreich wenn es minimaler, *lauffähiger* Code ist, der das Problem zeigt. Hier ist einiges überflüssiges drin.

Was hast Du Dir beim Aufruf von `login_form()` und `login_submit()` in `main()` gedacht? Wo wird die Funktion verwendet? Wann glaubst Du werden die Zeilen nach dem `run()`-Aufruf in der `main()` ausgeführt?

In `login_form()` wird `sensors` verwendet, was nirgends definiert ist. Die ``while``-Schleife sollte eigentlich eine ``for``-Schleife sein. Welches Tutorial hast Du durchgearbeitet was einen auf so eine Idee bringt?

Innerhalb der Schleife ist ``"".join(modified)`` sinnlos. Erkläre mal was das bewirken soll, und überprüfe an einem Beispiel was es tatsächlich für einen Effekt hat.

Das ``return`` ist auskommentiert, was erwartest Du da als Anzeige im Browser von dieser Funktion?

Statt HTML per Hand zusammen zu bauen sollte man eine Template-Bibliothek verwenden. Bottle bringt eine mit. (Ich bevorzuge Jinja2.)

`login_submit()` ist auch fehlerhaft. `Chart` ist nirgends definiert → `NameError`.

Zu guter letzt: Bitte Fehlermeldungen 1:1 wiedergeben, inklusive Traceback.

Wenn Du ein Bild in eine Webseite einbinden möchtest, dann musst Du den Quelltext dieser Seite zurückgeben und die muss ``<img>``-Tag mit einer URL enthalten, welche dieses Bild liefert.
Antworten