【问题标题】:Reverse for 'create_chat' with arguments '('',)' not found. 1 pattern(s) tried: ['create_chat/(?P<id>[0-9]+)/$']未找到参数 '('',)' 的 'create_chat' 的反向操作。尝试了 1 种模式:['create_chat/(?P<id>[0-9]+)/$']
【发布时间】:2021-01-15 14:16:53
【问题描述】:

我正在构建聊天应用程序,并且使用的是 Django 版本 3.8.1。我陷入了错误。

此视图用于与朋友私聊。

views.py

def create_chat(request,id):
    from_user = get_object_or_404(User,id=id)
    user1 = request.user
    user2 = from_user

    chat_box = ChatBox(user_1=user1,user_2=user2)
    chat_box.save()

urls.py

path('create_chat/<int:id>/',views.create_chat,name='create_chat'),

profile.html

<a href="{% url 'create_chat' from_user.id  %}">Chat</a> 

问题

当我在浏览器中打开 profile.html 时,会发生此错误,名为:- Reverse for 'create_chat' with arguments '('',)' not found. 1 pattern(s) tried: ['create_chat/(?P&lt;id&gt;[0-9]+)/$']

非常感谢您的帮助。提前谢谢你。

【问题讨论】:

  • unknown from_user.id,检查这个变量
  • @Ihar 对不起,我不明白。请作为答案上传。
  • 你能显示呈现profile.html的视图吗?

标签: python html django django-views


【解决方案1】:

您必须将变量 from_user 传递给模板,如下所示:

def create_chat(request,id):
    from_user = User.objects.get(id=id)
    user1 = request.user
    user2 = from_user

    chat_box = ChatBox(user_1=user1,user_2=user2)
    chat_box.save()
    context = {
              'from_user': from_user, 
              ...
              ...
              }
    return render(request, 'mytemplate.html', context)

【讨论】:

  • 我已经创建了一个模板。我在用户的个人资料中放置了一个开始聊天的链接。我不需要渲染到某个模板。这就是为什么我没有创建任何模板。顺便说一句,我跟着你的回答,但我得到了同样的错误。
  • 但我真的很感谢你的努力。谢谢。你能给我另一个建议吗?请
  • 在模板中检查变量 from_user.id 中的内容,可能是空的
  • 只是从_user.id打印
  • 在模板中插入 {{ from_user.id }} 看看,会显示什么
【解决方案2】:

你应该在 urls.py 中提及

app_name = "app_name"

在模板中

<a href="{% url 'app_name:create_chat' from_user.id  %}">Chat</a> 

它应该可以工作

【讨论】:

  • 我收到了Reverse for 'create_chat' with keyword arguments '{'id': ''}' not found.
  • id 是空的,它的意思是 id 没有通过
  • 为了调试它,我认为一个简单的方法是将 at 打印到命令行中,然后看看它会打印什么
  • 好的,感谢您的帮助。我很感激。
  • 好的!快乐编码:)
猜你喜欢
  • 2020-08-16
  • 1970-01-01
  • 2017-11-05
  • 2021-12-12
  • 2020-10-21
  • 2023-03-28
  • 2021-04-24
  • 2019-09-07
  • 2022-01-13
相关资源
最近更新 更多