Django .Reverse 用于“医生”,没有找到任何参数。尝试了 1 种模式:['doctor / (?P <pk> [^ /] +) / $']

Posted

技术标签:

【中文标题】Django .Reverse 用于“医生”,没有找到任何参数。尝试了 1 种模式:[\'doctor / (?P <pk> [^ /] +) / $\']【英文标题】:Django .Reverse for 'doctor' with no arguments not found. 1 pattern (s) tried: ['doctor / (? P <pk> [^ /] +) / $']Django .Reverse 用于“医生”,没有找到任何参数。尝试了 1 种模式:['doctor / (?P <pk> [^ /] +) / $'] 【发布时间】:2021-02-20 08:18:33 【问题描述】:

框架 Django。 我正在尝试通过创建每个用户(医生)的 id 的自动 url 来创建指向每个用户(医生)个人资料的链接。出现错误:未找到没有参数的“医生”的反向。尝试了 1 种模式:['doctor / (?P [^ /] +) / $']

我想我需要在模板链接中添加第二个参数,但我无法弄清楚“% url 'doctor' ??%”

html

 ..."% url 'doctor'  %"...

view.py

def doctor(request, pk):
    doctors = Doctor.objects.get(pk)
    return render(request, 'main/doctor.html', 'doctors': doctors)

网址

path('doctor/<str:pk>/', views.doctor, name='doctor'),

【问题讨论】:

这能回答你的问题吗? How to add url parameters to Django template url tag? docs.djangoproject.com/en/3.1/topics/http/urls/… 这样传递参数:% url 'doctor' pk=doctors.pk % 【参考方案1】:

这样传递pk参数% url 'doctor' doctor.pk %

主键通常也是整数类型,因此您可以在 urls.py 中进行此更正

path('doctor/<int:pk>/', views.doctor, name='doctor'),

【讨论】:

不起作用,“医生”的错误反转,未找到参数“(”,)”。尝试了 1 种模式:['doctor/(?P[0-9]+)/$']【参考方案2】:

主键是字符串的一种整数类型,所以我们需要在url.py中传递int。

所以url.py 应该是这样的,

path('doctor/<int:pk>/', views.doctor, name='doctor'),

如果您想要一个具有某些主键的特定医生,您可以在模板上下文中传递它,在这种情况下您不需要使用数据库管理器查询数据库。只需简单地将主键传递给模板,django 将为您处理其余部分。?

doctor.html

<a href="% url 'doctor' pk %">doctor with special pk </a>

更多信息可以参考官方文档reverse-resolution-of-urls.

【讨论】:

不起作用,“医生”的错误反向,没有找到参数“(”,)”。尝试了 1 种模式:['doctor/(?P[0-9]+)/$']【参考方案3】:

可能是错字,但值得一试 在views.py 文件中传递变量doctors 所以在你的模板编辑中

% url 'doctor' doctor.pk %

% url 'doctors' doctors.pk %

【讨论】:

以上是关于Django .Reverse 用于“医生”,没有找到任何参数。尝试了 1 种模式:['doctor / (?P <pk> [^ /] +) / $']的主要内容,如果未能解决你的问题,请参考以下文章

用于 JavaScript 的 Django reverse()

django url reverse不适用于命名的url(重新编辑)找到了原因,但现在卡住了!

没有找到带有参数“()”和关键字参数“”的 Django Reverse

Django url 标签和reverse()函数的使用(转)

如何使用 django.core.urlresolvers.reverse 中的 reverse()

Django中reverse()和reverse_lazy()的区别