Django NoreverseMatch错误未找到url
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django NoreverseMatch错误未找到url相关的知识,希望对你有一定的参考价值。
我找了通过paramater(id)
的链接查看,但我收到此错误:
我想点击链接并重定向到modifyPlanteur.html,其中包含由id查询填写的表单。
但是我收到了这个错误:
使用参数'('',)'找不到'modifyPlanteur'的反转。尝试了1种模式:['blog / modifyPlanteur /(?P [0-9] +)$']
ps:抱歉,我的英语不好我是法国人,谢谢。
网址项目:
urlpatterns = [
url(r'^$', views.home, name='home'),
url(r'^about/$', views.about, name='about'),
url(r'^contact/$', views.contact, name='contact'),
url(r'^blog/', include('blog.urls'), name='blog'),
url(r'^admin/', admin.site.urls),
]
if settings.DEBUG:
import debug_toolbar
urlpatterns = [
url(r'^__debug__/', include(debug_toolbar.urls)),
] + urlpatterns
网址应用:
from django.conf.urls import url
from . import views
app_name ='blog'
urlpatterns = [
url(r'^$', views.index, name='index'),
url(r'^posts/(?P<id>[0-9]+)$', views.show, name='show'),
url(r'^planteur/$', views.planteur, name='planteur'),
url(r'^mouvement/$', views.mouvement, name='mouvement'),
url(r'^ajax/planteur/$', views.searchPlanteur, name='searchPlanteur'),
url(r'^ajax_query/$', views.ajax_query, name='ajax_query'),
url(r'^ajax_query/blog/ajax_query.html/$', views.ajax_query, name='ajax_query'),
url(r'^autocomplete/$', views.autocomplete, name='autocomplete'),
url(r'^get_planteurs/$', views.get_planteurs, name='get_planteurs'),
url(r'^modifyPlanteur/(?P<id>[0-9]+)$', views.modifyPlanteur, name='modifyPlanteur'),
]
观点:
def planteur(request):
planteurs = Planteur.objects.all()
#instance = get_object_or_404(Planteur, id=17)
form = PlanteurForm(request.POST or None)
if form.is_valid():
planteur = form.save(commit=False)
planteur.save()
#envoie = True
# form = PlanteurForm()
#else:
# form = PlanteurForm()
return render(request, 'blog/planteur.html', locals(), { 'planteurs': planteurs})
def modifyPlanteur(request, id):
planteurs = Planteur.objects.all()
instance = get_object_or_404(Planteur, pk=id)
form = PlanteurForm(request.POST or None, instance=instance)
if form.is_valid():
planteur = form.save(commit=False)
planteur.save()
envoie = True
form = PlanteurForm()
return render(request, 'blog/modifyPlanteur.html', { 'planteurs': planteurs, 'instance': instance})
模板:播种机
{% extends 'blog/base.html' %}
{% block title %}Poyosei|creation planteur{% endblock %}
{% block body %}
<h1>{{ planteurs|length }} planteurs</h1>
{% if envoi %} Le planteur a bien été crée !{% endif %}
<table class="table">
<thead class="thead-dark">
<tr>
<th>Id</th>
<th>Nom</th>
<th>Prenom</th>
<th>Pacage</th>
<th>Siret</th>
<th>Controle?</th>
</tr>
</thead>
{% csrf_token %}
{% for p in planteurs %}
<tbody>
<tr>
<td>{{ p.id }}</td>
<td>{{ p.nom }}</td>
<td>{{ p.prenom }}</td>
<td>{{ p.pacage }}</td>
<td>{{ p.siret }}</td>
<td>{{ p.controle }}</td>
<td><a href="{% url 'blog:modifyPlanteur' p.id %}" role="button" class="btn btn-warning" method="post">Editer</a></td>
</tr>
</tbody>
{% endfor %}
</table>
{% endblock %}
templates modifyPlanteur:
{% block body %}
<h1>{{ planteurs|length }} planteurs</h1>
<div class='farmer'>
<form class='planteur' id='PlanteurForm' a href="{% url 'blog:modifyPlanteur' p.id %}" method="post">
{% csrf_token %}
{% for field in form %}
<div class="form-group">
<label class='col-sm-4 control-label' for="{{ field.name }}">{{ field.label }}: </label>
<div class="col-sm-12">
{{ field }}
</div>
</div>
{% endfor %}
<input type="submit" name="submit" class='btn btn-primary btn-lg' value='Valider'>
</form>
</div>
{% endblock %}
答案
你忘了添加结束斜杠'/'
url(r'^modifyPlanteur/(?P<id>[0-9]+)/$', views.modifyPlanteur, name='modifyPlanteur'),
以上是关于Django NoreverseMatch错误未找到url的主要内容,如果未能解决你的问题,请参考以下文章
为啥 Django 模板模式匹配错误的视图并导致 NoReverseMatch 错误?
如何解决 django 中的 NoReverseMatch 错误 [重复]
升级 Django 和 NoReverseMatch 密码错误
如何修复 NoReverseMatch Django 错误?