django得到有关views.py的错误

时间:2018-01-03 21:44:10

标签: python django django-models django-templates django-views

这是我的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>        

我想从我的数据库中获取数据,但是在网络上获取属性没有对象错误。但是我可以看到管理页面上的所有对象你知道我做错了吗?

2 个答案:

答案 0 :(得分:0)

您正在尝试从模板中的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> 

修改 正如博鲁提到的那样,renderhouses_list的{​​{1}}电话错过了request,即

return render(request, ...)

此外,您的urlpatterns引用了Houses模型而不是houses_list视图,即它应该是views.houses_list而不是views.Houses

答案 1 :(得分:0)

以下是修复错误的代码:

网址中的错误导致了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 %}