Seite 1 von 2

Verfasst: Donnerstag 2. Februar 2006, 15:11
von jens
OK, aber wo macht das Sinn??? Und reicht nicht doch ein normales Dict dafür?

Verfasst: Donnerstag 2. Februar 2006, 15:16
von mitsuhiko
Hier:

Code: Alles auswählen

def get_form(self):
    return '\n'.join('<input type="checkbox" name="delete" value="%d">' % i for i on xrange(200))
Dann hast du eine Form aus 200 Checkboxen. Und für alle angeklickten bekommst du deren IDs mit request.GET.getlist('delete').

Verfasst: Donnerstag 2. Februar 2006, 15:54
von jens
Nagut, einen Anwenungsfall gibt es schon... Nur, es geht wie gesagt auch mit einem normalem Dict... :lol:

Verfasst: Donnerstag 2. Februar 2006, 17:09
von jens
Nich zwei andere Fragen:

1.) Mit self.request.exposed.append() kann man ja Daten zum Traceback hinzufügen... Aber in welcher Form müßen die vorliegen? Dürfen es nur Dicts sein?

2.) Der Standalone-Test-Server funktioniert bei mir übers Netz erst dann, wenn bei http://wsgiarea.pocoo.org/trac/browser/ ... te.py#L342
Es nicht:

Code: Alles auswählen

self.run_standalone(options.hostname or 'localhost',
sondern:

Code: Alles auswählen

self.run_standalone("",
steht. Ist das normal???

3.) Beim starten vom standalone-Test-Server kommt es immer zu einem Traceback, aber der Server läuft:
Traceback (most recent call last):
File "PyLucid_CGI_app.py", line 106, in ?
CGIServer(app, exports).run()
File "/daten/www/testing_Server/PyLucid_WSGI/colubrid/execute.py", line 111, in run
result = self.application(environ, start_response)
File "PyLucid_CGI_app.py", line 57, in __init__
super(PyLucid, self).__init__(*args)
File "W:\testing_Server\WSGIarea\colubrid\application.py", line 64, in __init__
File "W:\testing_Server\WSGIarea\colubrid\request.py", line 35, in __init__
File "W:\testing_Server\WSGIarea\colubrid\request.py", line 53, in get_full_url
File "W:\testing_Server\WSGIarea\colubrid\utils.py", line 292, in get_full_url
KeyError: 'SERVER_NAME'
Was ich aber überhaupt nicht verstehe, wie das Windows-Pfade im Traceback rein kommen können :shock:
Also ich starte den Server unter Linux! Zwar stimmen die Pfade theoretisch, weil die als Samba Freigabe so verfügbar sind, aber irgendwie macht das keinen Sinn :?:

Verfasst: Donnerstag 2. Februar 2006, 17:30
von modelnine
Was ich aber überhaupt nicht verstehe, wie das Windows-Pfade im Traceback rein kommen können :Shocked:
Also ich starte den Server unter Linux! Zwar stimmen die Pfade theoretisch, weil die als Samba Freigabe so verfügbar sind, aber irgendwie macht das keinen Sinn
Doch. Die Pfade sind noch .pyc's die Du unter Windows kompiliert hast da drin. Lösch alle .pyc-s, und die Linux-Pfade tauchen auf.

--- Heiko.

Verfasst: Donnerstag 2. Februar 2006, 17:32
von jens
Jup, das war es :roll:

Verfasst: Freitag 3. Februar 2006, 07:02
von jens
Ich hab noch eine generelle Anmekrung zur Namenswahl. Warum heißt es überhaupt CGIServer in colubird?
Für mich ist ein Apache mit CGI ehr ein CGI-Server :lol:

Ich würde vorschlagen das ehr CGIbridge zu nennen. Denn es ist doch ehr eine Brücke zwischen dem ApacheCGIServer und der WSGI-Applikation. Oder vielleicht auch CGIAdapter...

EDIT:
Ich hab nochmal mit --hostname und --port gespielt... Leider funktioniert ein --hostname "" nicht.
Das liegt an options.hostname or 'localhost' Denn das Ergebniss ist 'localhost' wenn options.hostname = "" ist :)

Hier mal ein Vorschlag:

Code: Alles auswählen

Index: W:/testing_Server/PyLucid_WSGI/colubrid/execute.py
===================================================================
...
 class StandaloneServer(ThreadingMixIn, HTTPServer):
 
     def __init__(self, application, exports, hostname, port, noreload, quiet):
+        print "Starting standalone Server at '%s' port:%s" % (hostname, port)
         HTTPServer.__init__(self, (hostname, port), WSGIHandler)

...

class CommandlineApplication(object):
...
    def handle_parameters(self):
...

         if args[0] == 'runserver':
-            self.run_standalone(options.hostname or 'localhost',
+            if options.hostname == None: options.hostname = "localhost"
+            self.run_standalone(options.hostname,
                                 options.port or 8080, bool(options.no_reload),
                                 bool(options.quiet))

Verfasst: Freitag 3. Februar 2006, 10:12
von mitsuhiko
jens hat geschrieben:Ich hab noch eine generelle Anmekrung zur Namenswahl. Warum heißt es überhaupt CGIServer in colubird?
Für mich ist ein Apache mit CGI ehr ein CGI-Server :lol:
Ney. Eigentlich sollte es ja WSGIServer heißen, aber wenn zwei in einer Datei sind isses leicht komisch. Aber vielleicht bennen ichs wirklich um, bricht halt Kompatibilität.
Ich würde vorschlagen das ehr CGIbridge zu nennen. Denn es ist doch ehr eine Brücke zwischen dem ApacheCGIServer und der WSGI-Applikation. Oder vielleicht auch CGIAdapter...
Jup. Ein eigener Server isses ja so nicht, aber da wrapper in der Regel WSGIServer heißen wollte ich da anknüpfen.

Und was deinen Patch angeht, würde man die Serverstart message bei jedem Code Reload sehen. Weil da startet er den Prozess einfach neu.

Verfasst: Freitag 3. Februar 2006, 10:17
von jens
blackbird hat geschrieben:Ein eigener Server isses ja so nicht, aber da wrapper in der Regel WSGIServer heißen wollte ich da anknüpfen.
Dann finde ich die ursprüngliche Namenswahl nicht wirklich gelungen...
blackbird hat geschrieben:Und was deinen Patch angeht, würde man die Serverstart message bei jedem Code Reload sehen. Weil da startet er den Prozess einfach neu.
OK, dann müßte das irgendwo anders hin, aber generell ist eine Ausgabe IMHO ein muß!
Was ist mit der anderen Zeile???

Verfasst: Freitag 3. Februar 2006, 11:15
von mitsuhiko
jens hat geschrieben:
blackbird hat geschrieben:Ein eigener Server isses ja so nicht, aber da wrapper in der Regel WSGIServer heißen wollte ich da anknüpfen.
Dann finde ich die ursprüngliche Namenswahl nicht wirklich gelungen...
Find ich nicht. Ist ja ein Diener :-)
blackbird hat geschrieben:Und was deinen Patch angeht, würde man die Serverstart message bei jedem Code Reload sehen. Weil da startet er den Prozess einfach neu.
OK, dann müßte das irgendwo anders hin, aber generell ist eine Ausgabe IMHO ein muß!
Was ist mit der anderen Zeile???
Den fix mit dem hostname ANY werde ich einbauen.

Verfasst: Freitag 3. Februar 2006, 11:26
von jens
blackbird hat geschrieben:
jens hat geschrieben:
blackbird hat geschrieben:Ein eigener Server isses ja so nicht, aber da wrapper in der Regel WSGIServer heißen wollte ich da anknüpfen.
Dann finde ich die ursprüngliche Namenswahl nicht wirklich gelungen...
Find ich nicht. Ist ja ein Diener :-)
Dann nenn es meinetwegen CGIbutler, CGIservant oder irgendwie anders, aber nicht CGIServer... :lol:

Verfasst: Mittwoch 5. April 2006, 16:13
von jens
Noch eine Anmerkung zur Namenswahl... Zwar ist in der neuen Colubrid kein CGI-Server mehr drin, aber dennoch...

Wie im IRC "besprochen" redet PEP-0333 von nicht von CGI-Serber sondern von CGI-Gateway, das IMHO sehr gut passt...

Es sieht also so aus:

WebApp -> CGI-Handler -> CGI-Gateway -> Apache

Also lasst und bitte immer von CGI-Gateware sprechen, ja? :lol:

(Im übrigen hab ich mal die http://wiki.python.de/Colubrid/Hello_World überarbeitet und noch ein paar Anmerkungen hinzugefügt...)