首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django :NoReverseMatch :/航天排放/组织/2/

Django :NoReverseMatch :/航天排放/组织/2/
EN

Stack Overflow用户
提问于 2021-04-27 16:48:37
回答 1查看 28关注 0票数 0

当我试图从list视图访问detail视图时,我会得到以下错误。

错误截图

奇怪的是,有些细节意见是可行的,有些则不行,我不明白问题在哪里。例如,下面是使用pk=1的组织的详细视图

组织细节视图

组织模型

代码语言:javascript
复制
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)

视图

代码语言:javascript
复制
class OrganisationDetail(generic.DetailView):
    model = models.Organisation


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

organisation_list.html

代码语言:javascript
复制
{% 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 %}

organisation_detail.html

代码语言:javascript
复制
{% 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 %}

urls.py

代码语言:javascript
复制
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')
]
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-27 16:58:26

parent_organisationNone时,您的详细信息页将无法用pk=None找到组织详细信息的url。

代码语言:javascript
复制
<a href="{% url 'space_missions:organisation-detail' pk=organisation.parent_organisation_id %}">
                    {{ organisation.parent_organisation.name }}
                </a>

用if块包装代码

代码语言:javascript
复制
{% if organisation.parent_organisation_id %}
<a href="{% url 'space_missions:organisation-detail' pk=organisation.parent_organisation_id %}">
     {{ organisation.parent_organisation.name }}
</a>

{% endif %}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67287326

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档