未找到带有参数 '('',)' 的 'todo-user' 的反向操作。已尝试 1 种模式

Posted

技术标签:

【中文标题】未找到带有参数 \'(\'\',)\' 的 \'todo-user\' 的反向操作。已尝试 1 种模式【英文标题】:Reverse for 'todo-user' with arguments '('',)' not found. 1 pattern(s) tried未找到带有参数 '('',)' 的 'todo-user' 的反向操作。已尝试 1 种模式 【发布时间】:2019-08-13 15:11:15 【问题描述】:

我在点击链接时尝试添加用户,但出现以下错误:

未找到带有参数“('',)' 的“todo-user”的反向操作。尝试了 1 种模式:['todo/(?P[^/]+)/$']

我的意见.py

def todo_user(request, todo_id):
    todo.username.add(request.user)
    todo.save()
    return render(request, '/')

模板

<a href="% url 'todo-user' todo.id %"></a>

Urls.py

path('validate/<todo_id>/', views.todo_user, name='todo-user),

用于模板渲染的 Views.py:

def home(request, token):
            todo_instance = get_object_or_404(Todo, token=token)
            context = 
                'token': todo_instance.token,
                'name': todo_instance.name,
       
       return render(request, '/', context)

谢谢你们!

【问题讨论】:

错误显示todo.id是空的,所以你应该首先显示用于渲染模板的视图。 谢谢!我已经编辑了这个问题,我希望它很好。 【参考方案1】:

在您的模板中,您指的是 todo 变量:

<a href="% url 'todo-user' todo.id %"></a>

但是在您用于渲染模板的上下文中,没有定义这样的变量。添加

'todo': todo_instance

根据您的上下文。您可以删除 'token' 和 'name' 并在模板中使用 todo.name

【讨论】:

以上是关于未找到带有参数 '('',)' 的 'todo-user' 的反向操作。已尝试 1 种模式的主要内容,如果未能解决你的问题,请参考以下文章

未找到带有参数“(”,)”和关键字参数“”的“比率”的反向

未找到带有参数“()”和关键字参数“”的“登录”的反向操作

未找到带有参数 '('',)' 的 'todo-user' 的反向操作。已尝试 1 种模式

未找到带有参数“()”和关键字参数“”的“password_change_done”的反向

未找到带有参数“()”和关键字参数“”的“send_referral_code”的反向

未找到带有参数“()”和关键字参数“”的“guestbook.posts”的反向操作。尝试了 0 种模式:[]