Link relativ zu root

Django, Flask, Bottle, WSGI, CGI…
Antworten
00eraser00
User
Beiträge: 36
Registriert: Donnerstag 28. September 2006, 12:21

Donnerstag 28. September 2006, 15:03

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.
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

Donnerstag 28. September 2006, 16:41

Das ist eine HTML-Sache. Du musst eine korrekte URL angeben, nicht nur die Domain. Du meinst http://www.spiegel.de/.
00eraser00
User
Beiträge: 36
Registriert: Donnerstag 28. September 2006, 12:21

Freitag 29. September 2006, 08:24

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?
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Freitag 29. September 2006, 08:57

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
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
00eraser00
User
Beiträge: 36
Registriert: Donnerstag 28. September 2006, 12:21

Freitag 29. September 2006, 09:04

Danke das funktioniert.

SUPIIIIIIIIIIIIIIIIIIIIIIIIII!!!!!!!!!!

VIELEN VIELEN DANK
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

Freitag 29. September 2006, 12:02

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__()?
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Freitag 29. September 2006, 12:15

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
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Antworten