url:使用参数'('',')反转'contract_update'

时间:2018-04-03 09:45:27

标签: python django django-urls

我无法理解为什么以下不起作用:请帮我弄清楚我做错了什么。

模板

 data-url="{% url 'dashboard:contract_update' contract.pk %}"

urls.py

url(r'^(?P<pk>[0-9]+)/contract-update/$', views.contract_update, name='contract_update'),

views.py

def contract_update(request, pk):
''' Updates instance of contract '''

contract = get_object_or_404(Contract, pk=pk)
template = 'dashboard/includes/contract/modal/partial_contract_update.html'
print(contract)

if request.method == 'POST':
    form = ContractForm(request.POST, instance=contract)
    print("contactperson_update: request.method = post")
else:
    form = ContractForm(instance=contract)

return save_contract_form(request, form, template)

console.log(url)= / 1 / contract-update /

错误消息:

django.urls.exceptions.NoReverseMatch: Reverse for 'contract_update' with arguments '('',)' not found. 1 pattern(s) tried: ['(?P<pk>[0-9]+)/contract-update/$']

我为联系人提供相同的代码,它正在运作。

data-url="{% url 'dashboard:contactperson_update' contact.pk %}"    
url(r'^(?P<pk>[0-9]+)/contactperson-update/$', views.contactperson_update, name='contactperson_update'),

1 个答案:

答案 0 :(得分:1)

非常感谢Alasdair。

更改了我的模板
<form method="post" action="{% url 'dashboard:contract_update' form.instance.contract.pk %}" class="js-contract-update-form">

<form method="post" action="{% url 'dashboard:contract_update' form.instance.pk %}" class="js-contract-update-form">

我的主要错误是从以前的模板复制/粘贴而没有注意细节...