2011-06-11 15 views
0

私は柔軟なURLをしようとします。私はこのようフレキシブルな正規表現のURL、Django

url(r'^(&\w*)?/?$', direct_to_template, 
    {'template': 'basic.djhtml'}), 

問題は誤りである

def get_absolute_url(self): 
    return "/&%s" % self.human_redble_url 

はget_absolute_urlました:

direct_to_template() got multiple values for keyword argument 'template'

それが何を意味するのでしょうか?どうすれば修正できますか?

はPython対話インタプリタでは、この正規表現は、私はそのアンパサンドがやっていることを理解していますが、気にしないでください

>>> import re 
>>> reg = re.compile('^(&\w*)?/?$') 
>>> result = reg.match('&post1') 
>>> result 
<_sre.SRE_Match object at 0xb77098a0> 
>>> wrong = reg.match('aergsr') 
>>> print wrong 
None 
>>> reg.match('post1') 
>>> print reg.match('post1') 
None 
>>> print reg.match('&post1/') 
<_sre.SRE_Match object at 0xb77097a0> 
>>> print reg.match('&post1:') 
None 

答えて

1

に動作します。

URLに名前付きグループを使用していないことが問題であると思われます。キャプチャされた文字列は、実際にはtemplateの最初の位置引数としてビュー関数に送られているので、テンプレートキーワードargと衝突します。

名前付きグループ - &(?P<my_arg>\w*)?/?$ - を使用するとうまくいくはずです。

+0

"/ admin"のアンパサンドはこの正規表現と一致しません。 – I159

+0

アプリケーションをさらに開発するには、正規表現は名前付きグループでなければなりません。ありがとう。 – I159