繁体   English   中英

NoReverseMatch错误Django 1.10

[英]NoReverseMatch error Django 1.10

我是Django的新手,似乎无法找到解决我问题的方法

我收到以下错误

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的应用程序中,我正在尝试使用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')
]

待办事项/ 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)

我无法弄清楚我在做什么错,一些指导将不胜感激

您的正则表达式已损坏; 它没有任何可匹配的字符。 您似乎想捕获一个数字PK,它应该是:

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

这里有一些注意事项。

正则表达式,可能是这里的实际问题
捕获url regex中的cid不包含适当的捕获组。 由于它是一个ID,因此您只应使用\\d+捕获数字

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

关闭网址正则表达式
当前网址不包含结束符号。 如果url实际上在/app/<id>/之后结束,则您很有可能用美元符号$关闭正则表达式。

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

命名空间用法
您在包含todo应用程序URL时使用了name 要正确使用名称空间,应将名称拖放到todo/ url中,然后将namespace添加到include中。

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

现在,您可以在模板中使用名称空间

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM