Seite 1 von 1

querystrings

Verfasst: Montag 14. Juni 2004, 21:29
von Gast
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

Verfasst: Dienstag 15. Juni 2004, 13:41
von Gast
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...

Verfasst: Donnerstag 17. Juni 2004, 12:49
von Gast
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

Verfasst: Donnerstag 17. Juni 2004, 13:46
von Milan
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.

Verfasst: Donnerstag 17. Juni 2004, 14:32
von Gast
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

Verfasst: Donnerstag 17. Juni 2004, 15:09
von Dookie
Hi rolgal,

versuchs mal mit

Code: Alles auswählen

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

Gruß

Dookie

Verfasst: Donnerstag 17. Juni 2004, 15:14
von Gast
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

Verfasst: Donnerstag 17. Juni 2004, 15:19
von Gast
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

Verfasst: Donnerstag 17. Juni 2004, 15:22
von Dookie
pydoc os.path 8)

Gruß

Dookie

Verfasst: Donnerstag 17. Juni 2004, 15:35
von Gast
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

Verfasst: Donnerstag 17. Juni 2004, 16:17
von Dookie
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

Verfasst: Donnerstag 17. Juni 2004, 16:29
von Milan
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...

Verfasst: Donnerstag 17. Juni 2004, 16:34
von Dookie
Hi Milan,

warum einfach wenns auch kompliziert geht ;)


Gruß

Dookie

Verfasst: Donnerstag 17. Juni 2004, 16:48
von Gast
hi

was ist das für code dookie!

ich suche wohl woanders als du

mfg

rolgal

Verfasst: Donnerstag 17. Juni 2004, 16:58
von Milan
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.

Verfasst: Donnerstag 17. Juni 2004, 17:01
von Gast
hi milan!

danke, das wollte ich wissen, jetzt ist es klar.

mfg

rolgal