大佬教程收集整理的这篇文章主要介绍了NoReverseMatch at /products/update/6/ Reverse for 'product_update' with arguments '('',)' not found,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我想通过点击产品列表的带有产品ID的URL转到产品更新方法但是这个错误来了。我不明白我在这里做错了什么。给出以下代码。
产品列表:
{% for product in products %}
<tr>
<td>
<img wIDth="55px" height="55px" src="{{ product.photo.url }}" />
</td>
<td><input class="groupcheck" type="checkBox" value="{{product.ID}}" ID="{{product.ID}}"/></td>
<td>
<a class="btn product-update" href="{% url 'accpack:product_update' pk=product.ID %}">{{product.product_codE}}</a>
</td>
<td>{{product}}</td>
<td>
<a class="far fa-plus-square fa-1x Js-create-product_attribute" data-url="{% url 'accpack:products_attributes_create' pk=product.ID %}"
data-toggle="modal" data-target="#modal-product_attribute"></a>  
<a class="far fa-edit fa-1x Js-create-product_attribute" data-url="{% url 'accpack:products_attributes_update' pk=product.ID %}"
data-toggle="modal" data-target="#modal-product_attribute"></a>
</td>
<td>{{product.cost_pricE}}</td>
<td>{{product.SALE_pricE}}</td>
<td>{{product.quantity_per_unit}}</td>
<td>{{product.branD}}</td>
</tr>
{% endfor %}
网址:
# Product url
url('products/$',vIEws.product_index,name="products"),url('products/create/$',vIEws.product_create,name="product_create"),url('products/update/(?P<pk>\d+)/$',vIEws.product_update,name="product_update"),
查看:
def product_update(request,pk):
product = get_object_or_404(Product,pk=pk)
if request.method == 'POST':
form = ProductForm(request.POST,instance=product)
else:
form = ProductForm(instance=product)
return save_product_form(request,form,'products/partial_product_update.HTML')
编辑/更新帖子
我在这里添加了 save_product_form
..
def save_product_form(request,template_Name):
data = Dict()
if request.method == 'POST':
if form.is_valID():
form.instance.created_by = request.user
form.instance.updated_by = request.user
form.save()
data['form_is_valID'] = True
products = Product.objects.all().prefetch_related('categorIEs').order_by('-ID')
data['HTML_List'] = render_to_String(request=request,template_name='products/partial_product_List.HTML',context={ 'products': products })
#messages.success(request,"New Product Created")
else:
#for msg in form.error_messages:
# messages.error(request,f"{msg}: {form.error_messages[msg]}")
data['form_is_valID'] = false
context = {'form': form}
data['HTML_form'] = render_to_String(template_name,context,request=request)
partial_product_update.HTML:
<form ID="Form" method="post" action="{% url 'accpack:product_update' pk %}" class="col s12" enctype="multipart/form-data">
{% csrf_token %}
<br>
{% crispy form form.Helper %}
<br>
</form>
追溯:
TraceBACk (most recent call last):
file "C:\Users\Dell\anaconda3\envs\webapp\lib\site-packages\django\core\handlers\exception.py",line 47,in inner
response = get_response(request)
file "C:\Users\Dell\anaconda3\envs\webapp\lib\site-packages\django\core\handlers\base.py",line 179,in _get_response
response = wrapped_callBACk(request,*callBACk_args,**callBACk_kwargs)
file "D:\MEGA\djangoprojects\myprojects\accpack\vIEws\products.py",line 52,in product_update
return save_product_form(request,'products/partial_product_update.HTML')
file "D:\MEGA\djangoprojects\myprojects\accpack\vIEws\products.py",line 36,in save_product_form
data['HTML_form'] = render_to_String(template_name,request=request)
file "C:\Users\Dell\anaconda3\envs\webapp\lib\site-packages\django\template\loader.py",line 62,in render_to_String
return template.render(context,request)
file "C:\Users\Dell\anaconda3\envs\webapp\lib\site-packages\django\template\BACkends\django.py",line 61,in render
return self.template.render(context)
file "C:\Users\Dell\anaconda3\envs\webapp\lib\site-packages\django\template\base.py",line 170,in render
return self._render(context)
file "C:\Users\Dell\anaconda3\envs\webapp\lib\site-packages\django\template\base.py",line 162,in _render
return self.nodeList.render(context)
file "C:\Users\Dell\anaconda3\envs\webapp\lib\site-packages\django\template\base.py",line 938,in render
bit = node.render_Annotated(context)
file "C:\Users\Dell\anaconda3\envs\webapp\lib\site-packages\django\template\base.py",line 905,in render_Annotated
return self.render(context)
file "C:\Users\Dell\anaconda3\envs\webapp\lib\site-packages\django\template\defaultTags.py",line 446,in render
url = reverse(vIEw_name,args=args,kwargs=kwargs,current_app=current_app)
file "C:\Users\Dell\anaconda3\envs\webapp\lib\site-packages\django\urls\base.py",line 87,in reverse
return iri_to_uri(resolver._reverse_with_prefix(vIEw,prefix,*args,**kwargs))
file "C:\Users\Dell\anaconda3\envs\webapp\lib\site-packages\django\urls\resolvers.py",line 685,in _reverse_with_prefix
raise noreverseMatch(msg)
django.urls.exceptions.noreverseMatch: Reverse for 'product_update' with arguments '('',)' not found. 1 pattern(s) trIEd: ['products/update/(?P<pk>\\d+)/$']
您没有将 pk
添加到您的上下文中,因此它是空的:
context = {'form': form}
data['html_form'] = render_to_String(template_name,context,request=request)
您的 context
必须在 pk
中包含 save_product_form
。
def save_product_form(request,form,template_Name):
...
context = {
'form': form
'pk': form.instance.pk
}
data['html_form'] = render_to_String(template_name,request=request)
...
或更新您的 partial_product_update.html - 使用 form.instance.pk
代替 pk
:
{% load crispy_forms_tags %}
<form id="Form" method="post" action="{% url 'accpack:product_update' form.instance.pk %}" class="col s12" enctype="multipart/form-data">
{% csrf_token %}
<br>
{% crispy form form.Helper %}
<br>
</form>
以上是大佬教程为你收集整理的NoReverseMatch at /products/update/6/ Reverse for 'product_update' with arguments '('',)' not found全部内容,希望文章能够帮你解决NoReverseMatch at /products/update/6/ Reverse for 'product_update' with arguments '('',)' not found所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。