フィルタに渡して URL を取得したい値がいくつかあります。
私のテンプレートには次のものがあります。
{% 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 %}
私のテンプレートタグには次のものがあります:
@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
出力 URL は次のようになります。
http://foo.org/john-smith-ARGScustidZZ11QQsortidZZ2
ARGS は引数の先頭、ZZ は「=」、QQ は「&」に相当します。
まず第一に:これはうまくいきますが、私は custid=name.id を add_args() に入れます. custid=11 を入れたいのですが、id をテキストではなく id として渡す方法.
また、PHP のように key=>value の配列を送信する方法はありますか。PHPでは、配列を作成します。たとえば、次のようにします。
arglist = array('custid' => $nameid, 'sortid' => $sortid );
add_args()
次に、arglist を引数として渡しadd_args()
ます。
foreach( arglist as $key => $value)
$argstr .= $key . 'ZZ' . $value . 'QQ'.
誰かがこれを機能させるためのより良い方法を持っていますか?
注: すべての引数を文字列として渡し、それらをフィルターで分割する必要がある場合は、気にしません。name.id をその値として渡す方法がわかりません...