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 错误?

Django:NoReverseMatch 错误 production_id:无

Django忘记密码电子邮件系统期间的NoReverseMatch错误