1

このブログのdjango-votingチュートリアルを使用しようとしています。

http://new.justinlilly.com/blog/2008/nov/04/django-voting-a-brief-tutorial/

私のアプリで動作する単純な賛成/反対投票システムを取得します。しかし、その投稿の最初のコメント投稿者と同じように、urls.pyのこのコードは次のとおりです。

urlpatterns = patterns('',
 url(r'^(?P[-\w]+)/(?Pup|down|clear)vote/?$', vote_on_object, tip_dict, name="tip-voting"),
)

このエラーが発生します:

unknown specifier: ?P[

私は正規表現でひどいです、誰かがそのURLを修正する方法のアイデアを持っていますか?

4

1 に答える 1

3

彼のブログがURLを操作しているようです。おそらく次のようになります。

url(r'^(?P<slug>[-\w]+)/(?P<direction>up|down|clear)vote/?$', vote_on_object, tip_dict, name="tip-voting"),

Python docsから使用されているパターンは、名前付きグループです。

(?P<name>...)

Similar to regular parentheses, but the substring matched by the group

シンボリックグループ名nameを介して、残りの正規表現内でアクセスできます。グループ名は有効なPython識別子である必要があり、各グループ名は正規表現内で1回だけ定義する必要があります。シンボリックグループも、グループに名前が付けられていないかのように、番号が付けられたグループです。したがって、以下の例でidという名前のグループは、番号付きグループ1として参照することもできます。

For example, if the pattern is `(?P<id>[a-zA-Z_]\w*)`, the group can be

m.group('id')またはなどの一致オブジェクトのメソッドへの引数でその名前によって参照され m.end('id')、正規表現自体の名前(を使用(?P=id))およびに与えられた置換テキスト.sub()(を使用)によっても参照されます\g<id>

于 2009-08-18T21:01:08.100 に答える