细节视图不显示该帖子的详细信息? Django

问题描述:

我有一个显示在browseaircraft.html中的飞机列表。用户点击标题并进入详细信息页面,但是,它不显示该特定信息的详细信息,而是显示所有信息?没有错误消息,但它无法正常运行细节视图不显示该帖子的详细信息? Django

模式

class Aircraft(models.Model): 
    title = models.CharField(max_length=50, default="") 
    cost = models.DecimalField(max_digits=8, decimal_places=3) 
    range = models.IntegerField() 
    cruise_speed = models.IntegerField() 

def get_absolute_url(self): 
    return reverse('aircraftdetail', kwargs={'pk': self.id}) 

网址

urlpatterns = [ 
url(r'^admin/', admin.site.urls), 
url(r'^aircraft', 'aircraft.views.browseaircraft', name='browseaircraft'), 
url(r'^aircraftdetail/(?P<pk>\d+)/$', 'aircraft.views.aircraftdetail', name='aircraftdetail'),] 

查看

def browseaircraft(request): 
    all_aircraft = Aircraft.objects.all() 
    variables = {'all_aircraft':all_aircraft} 
    return render(request,'browseaircraft.html', variables) 

def aircraftdetail(browseaircraft): 
    model = Aircraft 

def aircraft_detail_view(request,pk): 
    try: 
     aircraft_id=Aircraft.objects.get(pk=pk) 
    except aircraft.DoesNotExist: 
     raise Http404("Book does not exist") 
    return render(request,'aircraft_detail.html', 
     context={'aircraft':aircraft_id,} 
    ) 

Browseaircraft.html

{% if all_aircraft%} 
    {% for a in all_aircraft %} 
     <img src="{{a.image.url}}"height="100" width="100"> 
     <a href="{{ a.get_absolute_url }}"> {{ a.title }}</a> 
     {{ a.range }}, 
     {{ a.body }}, 
    {% endfor %} 

aircraft_detail.html

{% block content %} 
    {% for a in all_aircraft %} 
    <h1>Title: {{ a.title }}</h1> 
    {{ a.cost }} 
    {{ a.range}} 
    {{ a.cost }} 
    {{ a.cruise_speed }} 
    {% endfor %} 
{% endblock %} 
+0

是否有任何理由,你为什么不理会我完全正确的答案时,你前两天问这同一个问题? –

那么,你的aircraft_detail.html循环对所有飞机,并显示他们的信息。如果你想只显示了一个选定飞机的信息,你需要到HTML页面更改为类似这样:

{% block content %} 
    <h1>Title: {{ aircraft.title }}</h1> 
    {{ aircraft.cost }} 
    {{ aircraft.range}} 
    {{ aircraft.cost }} 
    {{ aircraft.cruise_speed }} 
{% endblock %} 

除了问题所指出的其他海报,你有一个问题你的urls.py.您不会终止您的索引视图的模式,因此它匹配开头的所有内容,包括“aircraftdetail”的“aircraft”。你应该坚持用$

url(r'^admin/', admin.site.urls), 
url(r'^aircraft/$', 'aircraft.views.browseaircraft', name='browseaircraft'), 
url(r'^aircraftdetail/(?P<pk>\d+)/$', 'aircraft.views. aircraft_detail_view', name='aircraftdetail'),] 
+0

此外,最后一个网址应该使用'aircraft.views.aircraft_detail_view'的适当视图名称,而不是'aircraft.views.aircraftdetail' – themanatuf

+1

是的,谢谢,更正。似乎有一个名为“aircraftdetail”的功能,但我不明白它意味着什么。 –