细节视图不显示该帖子的详细信息? 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 %}
那么,你的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'),]
此外,最后一个网址应该使用'aircraft.views.aircraft_detail_view'的适当视图名称,而不是'aircraft.views.aircraftdetail' – themanatuf
是的,谢谢,更正。似乎有一个名为“aircraftdetail”的功能,但我不明白它意味着什么。 –
是否有任何理由,你为什么不理会我完全正确的答案时,你前两天问这同一个问题? –