【问题标题】:Reverse for 'patient_update' with keyword arguments '{'pk': ''}' not found. 1 pattern(s) tried: ['patients/update/(?P<pk>[0-9]+)$']?未找到关键字参数“{'pk': ''}' 的“患者更新”的反向操作。尝试了 1 种模式:['patients/update/(?P<pk>[0-9]+)$']?
【发布时间】:2019-07-07 17:17:19
【问题描述】:

我创建了一个视图,用户可以在其中编辑患者信息,并且由于我使用的是自定义用户模型,因此我必须创建自定义更新/删除视图。当我通过 url 手动输入视图时,视图正在工作,但是当我通过锚标记放置对它们的链接引用我收到一个错误,它无法访问 pk,我尝试在此处遵循许多答案和 YT 上的视频,但错误仍然存​​在

Views.py

def PatientUpdateView(request,pk=None):

    patient = get_object_or_404(models.Patient, pk=pk)
    form = forms.PatientForm(request.POST or None ,instance=patient)
    if form.is_valid() :
        patient = form.save(commit=False)
        patient.save()
        messages.success(request,"patient updated!")
        context = {
            'patient': patient,
            'form': form
        }
        return render(request,'patients/patient_edit_form_success.html',context)
    else:
        context = {
            'patient' : patient,
            'form': form,
                   }
        return render(request, 'patients/patient_edit_form.html', context)

这就是我在锚标记中如何称呼它

 <a class="btn btn-info btn-sm" href="{% url 'patients:patient_update' patient.pk %}">Open</a>

我试过了

pk = patient.pk
pk = pk 

以及许多其他的调用方式。

urls.py 这是我使用的 url 模式

    path('update/<int:pk>', views.PatientUpdateView, name='patient_update'),

【问题讨论】:

  • 请分享您的urls.py
  • 您确定错误位于patient_edit_form_success.html(或另一个)吗?
  • 刚刚在帖子中编辑过
  • 不,它位于我试图放置按钮的视图中。
  • 该错误是在首次加载页面时发生还是在成功 POST 后发生?

标签: django django-templates django-views


【解决方案1】:

尝试将&lt;a&gt; 标记更改为以下内容:

&lt;a class="btn btn-info btn-sm" href="{% url 'patient_update' patient.pk %}"&gt;Open&lt;/a&gt;

在提供 url 名称时不需要名称间距。另外,记得在你的模板文件中{% load static %}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-07
    • 2020-05-13
    • 2022-01-13
    • 2021-06-13
    • 2020-02-06
    • 2021-08-10
    • 1970-01-01
    • 2019-02-07
    相关资源
    最近更新 更多