Django:NoReverseMatch at/spacemissions/Organization/2/

Django:NoReverseMatch at/spacemissions/Organization/2/,django,django-views,django-templates,Django,Django Views,Django Templates,当我尝试从列表视图访问详细视图时,我遇到以下错误 奇怪的是,有些细节视图有效,有些无效,我不明白问题出在哪里。例如,这里是pk=1的组织的详细视图 组织模式 class Organisation(models.Model): code = models.CharField(max_length=256, unique=True) name = models.CharField(max_length=256, null=True) english_name = mode

当我尝试从列表视图访问详细视图时,我遇到以下错误

奇怪的是,有些细节视图有效,有些无效,我不明白问题出在哪里。例如,这里是pk=1的组织的详细视图

组织模式

class Organisation(models.Model):
    code = models.CharField(max_length=256, unique=True)
    name = models.CharField(max_length=256, null=True)
    english_name = models.CharField(max_length=256, null=True)
    location = models.CharField(max_length=256, null=True)
    country = models.ForeignKey('space_missions.Country',
                                on_delete=models.SET_NULL, null=True, blank=True)
    longitude = models.FloatField(null=True)
    latitude = models.FloatField(null=True)
    parent_organisation = models.ForeignKey('self', on_delete=models.SET_NULL, null=True, blank=True)

{% extends 'base.html' %}

{% block content %}
    <h1>Organisation List</h1>
    {% if organisation_list %}
        <ul>
            {% for organisation in organisation_list %}
                <li>
                    <a href="{% url 'space_missions:organisation-detail' pk=organisation.pk %}">
                        {{ organisation.name }}
                    </a>
                </li>
            {% endfor %}
        </ul>
    {% else %}
        <p>No organisation is stored in the database!</p>
    {% endif %}
{% endblock %}
{% extends 'base.html' %}

{% block content %}
    <div class="container">
        <h1>{{ organisation.name }}'s details:</h1>
        <ul>
            <li><strong>Code: </strong> {{ organisation.code }}</li>
            <li><strong>English Name: </strong> {{ organisation.english_name }}</li>
            <li><strong>Location: </strong> {{ organisation.location }}</li>
            <li><strong>Country: </strong>
                <a href="{% url 'space_missions:country-detail' pk=organisation.country_id %}">
                    {{ organisation.country.name }}
                </a>
            </li>
            <li><strong>Longitude: </strong> {{ organisation.longitude }}</li>
            <li><strong>Latitude: </strong> {{ organisation.latitude }}</li>
            <li>
                <strong>Parent organisation: </strong>
                <a href="{% url 'space_missions:organisation-detail' pk=organisation.parent_organisation_id %}">
                    {{ organisation.parent_organisation.name }}
                </a>
            </li>
        </ul>
    </div>
{% endblock %}
视图

class OrganisationDetail(generic.DetailView):
    model = models.Organisation


class OrganisationList(generic.ListView):
    model = models.Organisation

organization\u list.html

class Organisation(models.Model):
    code = models.CharField(max_length=256, unique=True)
    name = models.CharField(max_length=256, null=True)
    english_name = models.CharField(max_length=256, null=True)
    location = models.CharField(max_length=256, null=True)
    country = models.ForeignKey('space_missions.Country',
                                on_delete=models.SET_NULL, null=True, blank=True)
    longitude = models.FloatField(null=True)
    latitude = models.FloatField(null=True)
    parent_organisation = models.ForeignKey('self', on_delete=models.SET_NULL, null=True, blank=True)

{% extends 'base.html' %}

{% block content %}
    <h1>Organisation List</h1>
    {% if organisation_list %}
        <ul>
            {% for organisation in organisation_list %}
                <li>
                    <a href="{% url 'space_missions:organisation-detail' pk=organisation.pk %}">
                        {{ organisation.name }}
                    </a>
                </li>
            {% endfor %}
        </ul>
    {% else %}
        <p>No organisation is stored in the database!</p>
    {% endif %}
{% endblock %}
{% extends 'base.html' %}

{% block content %}
    <div class="container">
        <h1>{{ organisation.name }}'s details:</h1>
        <ul>
            <li><strong>Code: </strong> {{ organisation.code }}</li>
            <li><strong>English Name: </strong> {{ organisation.english_name }}</li>
            <li><strong>Location: </strong> {{ organisation.location }}</li>
            <li><strong>Country: </strong>
                <a href="{% url 'space_missions:country-detail' pk=organisation.country_id %}">
                    {{ organisation.country.name }}
                </a>
            </li>
            <li><strong>Longitude: </strong> {{ organisation.longitude }}</li>
            <li><strong>Latitude: </strong> {{ organisation.latitude }}</li>
            <li>
                <strong>Parent organisation: </strong>
                <a href="{% url 'space_missions:organisation-detail' pk=organisation.parent_organisation_id %}">
                    {{ organisation.parent_organisation.name }}
                </a>
            </li>
        </ul>
    </div>
{% endblock %}
{%extends'base.html%}
{%block content%}
组织名单
{%if组织_列表%}
    {对于组织中的组织,{u列表%}
  • {%endfor%}
{%else%} 数据库中未存储任何组织

{%endif%} {%endblock%}
organization\u detail.html

class Organisation(models.Model):
    code = models.CharField(max_length=256, unique=True)
    name = models.CharField(max_length=256, null=True)
    english_name = models.CharField(max_length=256, null=True)
    location = models.CharField(max_length=256, null=True)
    country = models.ForeignKey('space_missions.Country',
                                on_delete=models.SET_NULL, null=True, blank=True)
    longitude = models.FloatField(null=True)
    latitude = models.FloatField(null=True)
    parent_organisation = models.ForeignKey('self', on_delete=models.SET_NULL, null=True, blank=True)

{% extends 'base.html' %}

{% block content %}
    <h1>Organisation List</h1>
    {% if organisation_list %}
        <ul>
            {% for organisation in organisation_list %}
                <li>
                    <a href="{% url 'space_missions:organisation-detail' pk=organisation.pk %}">
                        {{ organisation.name }}
                    </a>
                </li>
            {% endfor %}
        </ul>
    {% else %}
        <p>No organisation is stored in the database!</p>
    {% endif %}
{% endblock %}
{% extends 'base.html' %}

{% block content %}
    <div class="container">
        <h1>{{ organisation.name }}'s details:</h1>
        <ul>
            <li><strong>Code: </strong> {{ organisation.code }}</li>
            <li><strong>English Name: </strong> {{ organisation.english_name }}</li>
            <li><strong>Location: </strong> {{ organisation.location }}</li>
            <li><strong>Country: </strong>
                <a href="{% url 'space_missions:country-detail' pk=organisation.country_id %}">
                    {{ organisation.country.name }}
                </a>
            </li>
            <li><strong>Longitude: </strong> {{ organisation.longitude }}</li>
            <li><strong>Latitude: </strong> {{ organisation.latitude }}</li>
            <li>
                <strong>Parent organisation: </strong>
                <a href="{% url 'space_missions:organisation-detail' pk=organisation.parent_organisation_id %}">
                    {{ organisation.parent_organisation.name }}
                </a>
            </li>
        </ul>
    </div>
{% endblock %}
{%extends'base.html%}
{%block content%}
{{organization.name}的详细信息:
  • 代码:{{organization.Code}
  • 英文名称:{{organization.English\u Name}
  • 位置:{{organization.Location}
  • 国家:
  • 经度:{{organization.Longitude}
  • 纬度:{{organization.Latitude}
  • 母公司组织:
{%endblock%}
url.py

from django.urls import path
from . import views

app_name = 'space_missions'

urlpatterns = [
    path('countries/', views.CountryList.as_view(), name='countries'),
    path('country/<int:pk>/', views.CountryDetail.as_view(), name='country-detail'),
    path('astronauts/', views.AstronautList.as_view(), name='astronauts'),
    path('astronaut/<int:pk>/', views.AstronautDetail.as_view(), name='astronaut-detail'),
    path('organisations/', views.OrganisationList.as_view(), name='organisations'),
    path('organisation/<int:pk>/', views.OrganisationDetail.as_view(), name='organisation-detail'),
    path('engines/', views.EngineList.as_view(), name='engines'),
    path('engine/<int:pk>/', views.EngineDetail.as_view(), name='engine-detail'),
    path('stages/', views.StageList.as_view(), name='stages'),
    path('stage/<int:pk>/', views.StageDetail.as_view(), name='stage-detail'),
    path('launchvehicles/', views.LaunchVehicleList.as_view(), name='launch-vehicles'),
    path('launchvehicle/<int:pk>/', views.LaunchVehicleDetail.as_view(), name='launch-vehicle-detail'),
    path('missions/', views.MissionList.as_view(), name='missions'),
    path('mission/<int:pk>/', views.MissionDetail.as_view(), name='mission-detail'),
    path('selections/', views.SelectionList.as_view(), name='selections'),
    path('selection/<int:pk>/', views.SelectionDetail.as_view(), name='selection-detail')
]
从django.url导入路径
从…起导入视图
应用程序名称='空间任务'
URL模式=[
路径('countries/',views.CountryList.as_view(),name='countries'),
路径('country/',views.CountryDetail.as_view(),name='country-detail'),
路径('soutomans/',views.coutomanslist.as_view(),name='soutomans'),
路径('audion/',views.audionDetail.as_view(),name='audion-detail'),
路径('Organizations/',views.organizationList.as_view(),name='Organizations'),
路径('organization/',views.organizationdetail.as_view(),name='organization-detail'),
路径('engines/',views.EngineList.as_view(),name='engines'),
路径('engine/',views.EngineDetail.as_view(),name='engine-detail'),
路径('stages/',views.StageList.as_view(),name='stages'),
路径('stage/',views.StageDetail.as_view(),name='stage-detail'),
路径('launchvehicles/',views.LaunchVehicleList.as_view(),name='launch-vehicles'),
路径('launchvehicle/',views.LaunchVehicleDetail.as_view(),name='launch-vehicle-detail'),
路径('missions/',views.MissionList.as_view(),name='missions'),
路径('mission/',views.MissionDetail.as_view(),name='mission-detail'),
路径('selections/',views.SelectionList.as_view(),name='selections'),
路径('selection/',views.SelectionDetail.as_view(),name='selection-detail')
]

父组织
时,您的详细信息页面无法找到具有
pk=None的组织详细信息的url

<a href="{% url 'space_missions:organisation-detail' pk=organisation.parent_organisation_id %}">
                    {{ organisation.parent_organisation.name }}
                </a>

用if块包装代码

{% if organisation.parent_organisation_id %}
<a href="{% url 'space_missions:organisation-detail' pk=organisation.parent_organisation_id %}">
     {{ organisation.parent_organisation.name }}
</a>

{% endif %}
{%if organization.parent\u organization\u id%}
{%endif%}

谢谢!这同样适用于国家外键,不是吗?@ErosFabrici是的,同样适用于国家外键。