2017-03-09 5 views
0

私はジャンゴに新しいですし、カントがNoReverseMatchエラージャンゴ1.10

私は次のエラーを取得

Reverse for 'todo_list' with arguments '()' and keyword arguments 

'{'cid': 1}' not found. 1 pattern(s) tried: ['todo/(?P<cid>)/'] 
    1 {% extends "base.html" %} 
    2 {% block nav_title %} Company Batches {% endblock nav_title %} 
    3 {% block content %} 
    4  <div class="jumbotron"> 
    5 
    6   {% for obj in object_list %} 
    7    <a href={% url 'todo_list' cid=obj.company.id%} class="href-nostyle"> 
    8     <div class="container"> 
    9      <div class="jumbotron" style="background:white"> 
    10       <div class="text-center"> 
    11        <h1>{{ obj.company }}<br> 
    12         <small>{{ obj.job }}</small> 
    13        </h1> 
    14       </div> 
    15     </div> 
    16     </div> 
    17   </a> 

このテンプレートは、名前のアプリに位置していますcompany_batchesと私の問題への解決策を見つけるように見えます私は、URLのタグが

あるのhref

を使用して藤堂アプリにユーザーをナビゲートしようとしています私は私がやっているかを把握カント

{% url 'todo_list' cid=obj.company.id%} 

私のメインurls.py

urlpatterns = [ 
    url(r'^admin/', admin.site.urls), 
    url(r'^$', home, name='home'), 
    url(r'^batches/', include('company_batches.urls')), 
    url(r'^todo/', include('todo.urls'), name='todo') 
] 

TODO/urls.py

urlpatterns = [ 
    url(r'^$', ToDoCreateView.as_view(), name='todo_create'), 
    url(r'^(?P<cid>)/', ToDoListView.as_view(), name='todo_list'), 
    ] 

関連views.py

class ToDoListView(ListView,): 
    template_name = 'todo/todo_list.html' 
    def get_context_data(self, *args, **kwargs): 
     context = super(ToDoListView, self).get_context_data(*args, **kwargs) 
     return context 
    def get_queryset(self, cid): 
     return ToDoList.objects.filter(company=self.cid) 

間違って、いくつかのガイダンスを高く評価されるでしょう

+0

を使用することができます。 –

答えて

2

ここで注意すべき点がいくつかあります。

正規表現、おそらくあなたのurl regexcidをキャプチャここで、実際の問題
は、適切なキャプチャグループが含まれていません。それはIDですので、あなただけの現在のURLが終了記号が含まれていないURLの正規表現
を閉じる\d+

url(r'^(?P<cid>\d+)/', ToDoListView.as_view(), name='todo_list'), 

と数字をキャプチャする必要があります。 /app/<id>/の後に実際にURLが終了する場合は、正規表現をドル記号$で閉じる可能性が高くなります。

url(r'^(?P<cid>\d+)/$', ToDoListView.as_view(), name='todo_list'), 

名前空間の使用状況
あなたはtodoアプリのURLを含むnameしばらく使用しています。名前空間を正しく使用するには、todo/のURLに名前をドロップし、 namespaceをインクルードに追加する必要があります。

url(r'^todo/', include('todo.urls', namespace='todo')) 

は、今すぐあなたのテンプレートで、あなたは正規表現であなたの `cid`キャプチャグループが空である名前空間

{% url 'todo:todo_list' cid=obj.company.id %} 
+0

はい、あなたは正しいです、私の正規表現は、cidを正しくキャプチャしていませんでした。詳細な答えをありがとう –

2

あなたの正規表現は壊れています。一致する文字はありません。数字のPKをキャプチャするように見えますが、次のようにする必要があります:

r'^(?P<cid>\d+)/