这是我的views.py
from django.shortcuts import render
from . models import Houses
def houses_list(request):
house = Houses.objects.all().order_by('owner')
return render('Houses.html',{'houses':house})
这是我的models.py
from django.db import models
class Houses(models.Model):
owner = models.CharField(max_length=250)
house_name = models.CharField(max_length=500)
country = models.CharField(max_length=500)
genre = models.CharField(max_length=100)
def __str__(self):
return self.house_name
class house(models.Model):
houses = models.ForeignKey(Houses, on_delete=models.CASCADE)
file_type = models.CharField(max_length=10)
house_title = models.CharField(max_length=250)
这是我的url.py
from django.urls import path
from . import views
urlpatterns= [
path('', views.Houses, name='Houses'),
]
这是我的html文件
{% load static %}
<html>
<head>
<meta charset = "utf-8">
<title>Houses</title>
</head>
<body>
<h1>House list</h1>
<div class="house">
{% for house in houses %}
<div class="house">
<h2><a href="#">{{Houses.house_name}}</a></h2>
<p>{{Houses.owner}}</p>
<p>{{Houses.genre}}</p>
</div>
{% endfor %}
</div>
</body>
</html>
我正在尝试从我的数据库中获取数据但在网络上获取属性没有对象错误。但是我可以看到管理页面上的所有对象你知道我做错了什么吗?
这是修复错误的代码:
url中的错误导致了AttributeError。修复代码:
urlpatterns= [
path('', views.houses_list, name='Houses'),
]
请记住,网址必须指向视图。但是在你修复之后,下一个错误将出现在views.py中,因为render()
缺少request
参数。改成:
def houses_list(request):
house = Houses.objects.all().order_by('owner')
return render(request, 'Houses.html',{'houses':house})
模板中的错误只会呈现为空。修复:
{% for house in houses %}
<div class="house">
<h2><a href="#">{{house.house_name}}</a></h2>
<p>{{house.owner}}</p>
<p>{{house.genre}}</p>
</div>
{% endfor %}
您正在尝试从模板中的Houses类获取属性。用house替换Houses,这是for循环返回的当前Houses对象。 `
<h1>House list</h1>
<div class="house">
{% for house in houses %}
<div class="house">
<h2><a href="#">{{house.house_name}}</a></h2>
<p>{{house.owner}}</p>
<p>{{house.genre}}</p>
</div>
{% endfor %}
</div>
编辑正如博鲁提到的,你在render
的houses_list
呼叫缺少request
,即
return render(request, ...)
此外,你的urlpatterns
引用Houses
模型而不是houses_list
视图,即它应该是views.houses_list
而不是views.Houses
。