Seite 1 von 1

Link relativ zu root

Verfasst: Donnerstag 28. September 2006, 15:03
von 00eraser00
Hi.

Ich möchte ein Template mit einem Link erstellen.
Im Moment hat es folgende Form:

<li><a tal:attributes="href www.spiegel.de"></a> </li> </a>

Dabei fügt er den Link aber an das Verzeichnis an in dem er sich grad befindet. Was muß ich ändern damit er die Adresse so nimmt wie ich sie eingebe?

Vielen Dank schonmal.

Verfasst: Donnerstag 28. September 2006, 16:41
von Y0Gi
Das ist eine HTML-Sache. Du musst eine korrekte URL angeben, nicht nur die Domain. Du meinst http://www.spiegel.de/.

Verfasst: Freitag 29. September 2006, 08:24
von 00eraser00
danke erstmal, so meinte ich das aber nicht

die links stehen in meiner datenbank und ich will daß er sie immer an http:// anfügt

wie muß ich daß dann schreiben? also wie muß ich den datenbankzugriff schreiben, daß die ausgabe an http:// angehängt wird?

Verfasst: Freitag 29. September 2006, 08:57
von gerold
00eraser00 hat geschrieben:die links stehen in meiner datenbank und ich will daß er sie immer an http:// anfügt
Hi!

Code: Alles auswählen

<li>
  <a tal:attributes="href string:http://${VARIABLE_MIT_URL_AUS_DATENBANK}"
     tal:content="VARIABLE_MIT_URL_AUS_DATENBANK"
  >[Link-Content]</a>
</li>
Du könntest die URL aber auch an ein Python-Script übergeben, welches prüft ob "http" schon vorne dran steht oder nicht.

Code: Alles auswählen

## Script (Python) "create_absolute_url"
##bind container=container
##bind context=context
##bind namespace=
##bind script=script
##bind subpath=traverse_subpath
##parameters=url
##title=
##
if url:
    url = str(url).strip()
    if url[:7] == "http://":
        return url
    else:
        return "http://" + url
else:
    return ""
Dann könnte der Aufruf so aussehen:

Code: Alles auswählen

<li>
  <a tal:define="url python: context.create_absolute_url(VARIABLE_MIT_URL_AUS_DATENBANK)"
     tal:attributes="href url"
     tal:content="url"
  >[Link-Content]</a>
</li>
mfg
Gerold
:-)

Verfasst: Freitag 29. September 2006, 09:04
von 00eraser00
Danke das funktioniert.

SUPIIIIIIIIIIIIIIIIIIIIIIIIII!!!!!!!!!!

VIELEN VIELEN DANK

Verfasst: Freitag 29. September 2006, 12:02
von Y0Gi
Dann speicherst du aber gewissermaßen bereits falsche Links in der Datenbank - warum dieses?

Gerold: Gibt es einen nennenswerten Unterschied zwischen url[7:] und url.startswith('http://') in diesem Fall? Funktionsaufrufe sind AFAIK etwas langsamer, aber dafür hängt hier auch nicht die 7 von der Zeichenkette ab (d.h. wenn man sowas im größeren Stil hat, da was ändert und dabei diese Längenangabe vergisst, findet man das Problem möglicherweise nicht so schnell). Andererseits, triggert die [:]-Syntax nicht auch eine Funktion, nämlich __slice__()?

Verfasst: Freitag 29. September 2006, 12:15
von gerold
Y0Gi hat geschrieben:Gibt es einen nennenswerten Unterschied zwischen url[7:] und url.startswith('http://') in diesem Fall?
Hi Y0Gi!

Der einzige Unterschie ist, dass mir ``url[:7]`` eher als ``url.startswith()`` eingefallen ist. :D

lg
Gerold
:-)