Django — wie zu verwenden templatetags filter mit mehreren Argumenten

Habe ich ein paar Werte, die ich gerne weitergeben möchte in einen filter und erhalten eine URL aus ihm heraus.

In meinem template habe ich:

{% if names %}
  {% for name in names %}
    <a href='{{name|slugify|add_args:"custid=name.id, sortid=2"}}'>{{name}}</a>
    {%if not forloop.last %} | {% endif %}
  {% endfor %}
{% endif %}

In meinem templatetags ich habe:

@register.filter
def add_args(value, args):
    argz = value.strip() + '-' + 'ARGS'
    arglist = args.split(',')
    for arg in arglist:
        keyval = arg.split('=')
        argz.join(keyval[0] + 'ZZ' + keyval[1])
        argz.join('QQ')

    return argz  

Die Ausgabe-URL sollte wie folgt Aussehen:

http://foo.org/john-smith-ARGScustidZZ11QQsortidZZ2

Wo ARGS ist der start der Argumente, ZZ '=' und QQ ist ein '&' entspricht.

Erstens: Das würde funktionieren, aber ich bekomme die custid=name.id kommt in die add_args(), wo ich ihn haben will custid=11 zu kommen. Wie übergeben Sie die id als id und nicht den text.

Auch, gibt es eine Möglichkeit, senden Sie uns einfach ein array mit key=>Wert wie in PHP.
In PHP würde ich bauen ein array, sagen wir:

arglist = array('custid' => $nameid, 'sortid' => $sortid ); 

Dann würde ich mich übergeben der Argumente als argument für add_args() und in add_args() ich tun würde,

foreach( arglist as $key => $value)
  $argstr .= $key . 'ZZ' . $value . 'QQ'.

Kennt jemand einen besseren Weg, von dieser Arbeit?

Hinweis: wenn ich alle übergeben Argumente als string aus und teilen Sie Sie in den filter, die ich nicht Verstand. Ich weiß nur nicht, wie das übergeben des namens.id als Wert ...

InformationsquelleAutor un33k | 2009-05-22
Schreibe einen Kommentar