django得到有关views.py的错误

问题描述 投票:-1回答:2

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

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

python django django-models django-templates django-views
2个回答
0
投票

这是修复错误的代码:

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 %}  

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呼叫缺少request,即

return render(request, ...)

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

© www.soinside.com 2019 - 2024. All rights reserved.