首页 > 解决方案 > NoReverseMatch 尽管有以下示例

问题描述

我对 Django 相当陌生——在网上学习了许多示例和教程——我已经制作了一段时间的各种模型。我遇到了一个错误:

NoReverseMatch at /Organisation/organisations Reverse for 'Organisation' not found. 'Organisation' is 
not a valid view function or pattern name.' 
Request Method: GET Request
URL:    http://127.0.0.1:8000/Organisation/organisations Django 
Version:    3.0 
Exception Type: NoReverseMatch 
Exception Value:     Reverse for 'Organisation' not found. 'Organisation' is not a valid view 
function or pattern name. 

我正在使用的代码的详细信息如下:

def get_absolute_url(self):
        #Returns the url to access a detail record for organisation.
        return reverse('Organisation.views.OrganisationDetail', args=[str(self.Form_Field_OrgID)])     

我的相关模型 -

Form_Field_OrgID = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    Form_Field_OrgName = models.CharField(max_length=100, help_text='Enter Organisation Name', verbose_name = "Organisation Name")
    Form_Field_OrgAddr = models.CharField(max_length=50, help_text='Enter Organisation Address', verbose_name = "Organisation Address")
    Form_Field_OrgAddr2 = models.CharField(max_length=50, help_text='Enter Organisation Address', verbose_name = "Organisation Address")
    Form_Field_OrgAddr3 = models.CharField(max_length=50, help_text='Enter Organisation Address', verbose_name = "Organisation Address")
    Form_Field_OrgAddr4 = models.CharField(max_length=50, help_text='Enter Organisation Address', verbose_name = "Organisation Address")
    Form_Field_OrgCountry = models.CharField(max_length=250, help_text='Select Organisation Country', verbose_name = "Organisation Country")
    Form_Field_OrgPcode = models.CharField(max_length=10, help_text='Enter Organisation Post Code', verbose_name = "Organisation Address")
    Form_Field_OrgEmail = models.EmailField(max_length=254, help_text='Enter Organisation Email', verbose_name = "Organisation Email Address")
    Form_Field_OrgPhone = models.CharField(max_length=12, help_text='Enter Organisation Phone Number', verbose_name = "Organisation Phone Number")
    Form_Field_OrgWebAddr = models.URLField(max_length=250, help_text='Enter Organisation Web Address', verbose_name = "Organisation Web Address")
    Form_Field_OrgVisible = models.BooleanField ( help_text='Is This Organisation Visable', verbose_name = "Show Organisation")
    Form_Field_OrgAddedBy = models.CharField(max_length=200, help_text='Who is Enter the Information', verbose_name = "Added By")
    Form_Field_OrgDateAdded = models.DateTimeField(default=datetime.now, verbose_name = "Date Added")
    Form_Field_OrgUserDefined = models.CharField(max_length=200, help_text='Enter any other Details', verbose_name = "Organisation Notes")

我的相关视图.py

from django.shortcuts import render
from django.db import models
from Organisation.models import Organisation, Departments, OrgDrtRpt
from django.views import generic

def index(request):

    return render(request, 'index.html')




  class OrganisationList(ListView):
    model = Organisation
    context_object_name ='all_organisations'



    class OrganisationDetail(DetailView):
    model = Organisation 
    context_object_name ='organisation_detail' 

My Urls.py

    from django.urls import path
    from . import views
    from django.conf.urls.static import static
    app_name ='Organisation'


    urlpatterns = [
    path('list/', OrganisationList.as_view()),
    path('details/<uuid:pk>', OrganisationDetail.as_view(), name ='organisation_detail'),


]  

我的组织列表.html

{% extends 'baseNotLoggedIn.html' %}

{% block title %}Organisation Home {% endblock title %}
{% block nav-style %}mkt-nav{% endblock nav-style %}

{% block content %} 

    {% if organisation_list %}
    <h1>All Organisations total ={{num_Organisations}}</h1>
    <ul>
        {% for Organisation in organisation_list %}
            <li>
                <a href="{{Organisation.get_absolute_url}}">{{Organisation.Form_Field_OrgName}}</a>({{Organisation.Form_Field_OrgAddr}}) <p>There are some</p>
            </li>
        {% endfor %}
    {% else %}
        <p> There are no organisations available </p>

    {%endif%}
    {# Hero Section #}  

    {# Main Section #}

{% endblock content %}

如果我将 get_absolute_url 更改为返回渲染,则列表视图可以正常工作....但我仍然收到无反向匹配错误

标签: pythondjangodjango-modelsdjango-views

解决方案


您需要包含命名空间

reverse('Organisation:Organisation', kwargs={'pk':self.pk})

旁注,这是 Django 行业标准来蛇形 URL 名称:

reverse('organisation:organisation', kwargs={'pk':self.pk})

推荐阅读