2016-07-29 10 views
1

Django urlresolvers.reverseが "|"に対して機能していません私のサービス/ urls.pyため</p> <pre><code>url = reverse('record-list') </code></pre> <p>::私は私のテストを持っている非キャプチャグループ

もで私のプロジェクトのurls.pyにロードされ
urlpatterns = [ 
    url(r'^records/?$', RecordList.as_view(), name='record-list'), 
... 

for app in apps['apps']: 
    try: 
     _module = import_module('%s.urls' % app) 
    except: 
     if settings.DEBUG: 
      raise 
     else: 
      pass 
    else: 
     urlpatterns += [url(r'^api/%s(?:/|/?$)' % app, include('%s.urls' % app))] 

とエラー

django.core.urlresolvers.NoReverseMatch: Reverse for 'record-list' with arguments '()' and keyword arguments '{}' not found. 1 pattern(s) tried: ['api/service(?:/|/?$)records/?$'] 
を取得3210

URLの途中にあるキャプチャグループは、なぜreverseに失敗しますか?

+0

リバース( 'レコードリスト')を参照してください。 – Igor

+0

これはキャプチャしていないグループなので、パラメータは必要ありません。 –

+0

(?:/ | /?$)のアプリケーションは動作しませんか? – Igor

答えて

1

これは、reverseの正規表現パーサが正規表現内の|シンボルを処理できないために発生します。まだ実装されていません。 (?:|/$ /)一つのパラメータの必要性、パラメータなしセンド -

https://github.com/django/django/blob/stable/1.9.x/django/utils/regex_helper.py#L98

+2

このコメントは少し誤解を招くことがあります。有効なグループは、逆の呼び出しで選択する必要がありますか? –

+0

良い点。いずれにしても回避策が見つかりました。ありがとうございます! –

関連する問題

 関連する問題