querystrings

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Gast

Montag 14. Juni 2004, 21:29

hallo zusammen!


folgendes ist alles klar:

Code: Alles auswählen

>>>import cgi
>>>test="http://localhost/crossover/dir_index.py?path=/crossover"
>>> test=cgi.parse_qsl(test)
>>> test
[('http://localhost/crossover/dir_index.py?path', '/crossover')]
das verzeichnis crossover rausholen ist dann auch keine grosse sache, die links dynamisch mit den querystrings erstellen auch nicht,.....

aber wie zum geier komme ich an den link, den ich hier zum testen ja angegeben habe

Code: Alles auswählen

>>>test="http://localhost/crossover/dir_index.py?path=/crossover"

wie kann ich das was ich anklicke auswerten? wie komme ich an den link, in dem sinne wie ich mittels

Code: Alles auswählen

form=cgi.FieldStorage()
an die daten komme, die ein user in einem formular eingegeben hat.

also vielleicht habe ich ja wieder mal einen an der waffel, aber ich stelle mir das so vor:
verzeichnisse werden als links dargestellt, klicke ich drauf, wird ein skript aufgerufen, das den inhalt ausliest, verzeichnisse werden wiederum als links dargestellt usw.

beim login wird ein vorgegebener pfad der ein verzeichnis repräseniert, z.b. '/var/www/html/' ausgelesen, dann muss, falls ein verzeichnis angeklickt wird, an den vorgegebenen pfad, in dem fall das verzeichnis "crossover" angehängt werden.

das hat auch alles schon funktioniert nur eben nicht mit links, ich hatte vorher egal ob für dateien oder verzeichnisse radio buttons verwendet, ein skript checkte ob der pfad ein verzeichnis war - auslesen oder eine datei - aktion.

vielen dank im voraus

mfg

rolgal
Gast

Dienstag 15. Juni 2004, 13:41

das ist bei os.environ dabei...

ich denke des war os.environ['QUERY'] weiß nicht genau...
mach mal cgi.test() dann siehste es auf jeden fall (natürlich beides nur im cgi script verfügbar)

und im FieldStorage ist es nur bei POST anfragen nicht enthalten...
da könntest du einen ausweg finden:

Code: Alles auswählen

<input type="hidden" name="path" value="/crossover" />
zb...
Gast

Donnerstag 17. Juni 2004, 12:49

hi!

danke für den anstoss, es muss lauten:

Code: Alles auswählen

my_query_string=os.environ['QUERY_STRING']

das müsste mich weiterbringen, mal sehen, wann ich wieder anstehe :D

mfg

rolgal
Milan
User
Beiträge: 1078
Registriert: Mittwoch 16. Oktober 2002, 20:52

Donnerstag 17. Juni 2004, 13:46

Hi. Denk, daran, dass es dann bei Anfragen per Post aber einen KeyError geben wird, da dann kein Querrystring übertragen wird. Ich würde, um das völlig auszuschließen, lieber die Dictionarymethode get benutzen.
Gast

Donnerstag 17. Juni 2004, 14:32

hi milan!

jo, solche erinnerungen sind in der tat nützlich, sie sind die bekannten bretter vor dem kopf, die man haben kann,


ich würde gern noch etwas anderes verbessern, ich habe es nicht gefunden in der doku, oder ich hatte oben genanntes brett vor dem kopf.

gibt es eigentlich keine möglichkeit, das momentane verzeichnis in dem ich mich befinde abzufragen?

also den ganzen pfad dazu

sowie

Code: Alles auswählen

my_document_root=os.environ['DOCUMENT_ROOT']
mfg

rolgal
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Donnerstag 17. Juni 2004, 15:09

Hi rolgal,

versuchs mal mit

Code: Alles auswählen

curpath = os.path.abspath(os.path.curdir)

Gruß

Dookie
Gast

Donnerstag 17. Juni 2004, 15:14

hi dookie!

nach kurzem test: das dürfte sein was ich brauche,

äh, woher hast du das?

und curdir ist dann wohl ein reservierter name oder?

mfg

rolgal
Gast

Donnerstag 17. Juni 2004, 15:19

und curdir ist dann wohl ein reservierter name oder?
für blöde fragen kriege ich nochmal den oskar :?

aber im ernst, woher hast du es?

danke, nochmal

rolgal
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Donnerstag 17. Juni 2004, 15:22

pydoc os.path 8)

Gruß

Dookie
Gast

Donnerstag 17. Juni 2004, 15:35

hi


http://python.org/doc/2.3.3/lib/module-os.path.html


hier?

die sache mit abspath schon, aber ich meine curdir

mfg

rolgal
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Donnerstag 17. Juni 2004, 16:17

curdir findest auch mit pydoc os.path relativ weit unten bei der Ausgabe:

Code: Alles auswählen

...
DATA
    __all__ = ['normcase', 'isabs', 'join', 'splitdrive', 'split', 'splite...
    altsep = None
    curdir = '.'
    defpath = ':/bin:/usr/bin'
    extsep = '.'
    pardir = '..'
    pathsep = ':'
    sep = '/'
...
curdir ist unter Unix/Linux einfach "." bei anderen Betriebssystemen die entsprechende Zeichenfolge.


Gruß

Dookie
Milan
User
Beiträge: 1078
Registriert: Mittwoch 16. Oktober 2002, 20:52

Donnerstag 17. Juni 2004, 16:29

Hi. Ein einfaches os.getcwd() hätte doch aber auch gereicht, oder? Das mit curdir ist ja klar, aber in dem Fall ein wenig umständlich. Ansonsten kann man ja gleich os.path.curdir verwenden, wenn man keinen absoluten path braucht...
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Donnerstag 17. Juni 2004, 16:34

Hi Milan,

warum einfach wenns auch kompliziert geht ;)


Gruß

Dookie
Gast

Donnerstag 17. Juni 2004, 16:48

hi

was ist das für code dookie!

ich suche wohl woanders als du

mfg

rolgal
Milan
User
Beiträge: 1078
Registriert: Mittwoch 16. Oktober 2002, 20:52

Donnerstag 17. Juni 2004, 16:58

Hi. Ja, tust du :wink: starte in der Konsole (Bash !) einfach pydoc mit dem Parameter os.path . Dann bekommst du als text sowas ähnliches wie das hier. Das kannst du natürlich auch so haben, indem du pydoc -g startest und dann schaust.
Antworten