【问题标题】:django getting error about views.pydjango 收到有关 views.py 的错误
【发布时间】:2018-06-13 14:38:48
【问题描述】:

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

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

【问题讨论】:

  • 能否提供错误日志?从你的描述看不是很清楚。
  • 在浏览器上我得到 'Houses' 对象没有属性 'get' 错误
  • 我想在 house.html 文件中显示“房屋”数据..
  • return 上的 houses_list() 缺少 request 参数,url 引用 Houses 而不是 houses_list 并且在循环模板中它应该是 {{ house.house_name }} 等等而不是 @ 987654334@.
  • 我遇到了同样的错误,请你写代码,也许我写错了..

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


【解决方案1】:

您正试图从模板中的 Houses 类中获取属性。将 Houses 替换为 house,即 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> 

编辑 正如 Borut 所提到的,您在houses_list 中的render 调用缺少request,即

return render(request, ...)

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

【讨论】:

    【解决方案2】:

    以下是已修复错误的代码:

    url 中的错误导致 AttributeError。修复代码:

    urlpatterns= [
        path('', views.houses_list, name='Houses'),
    ]
    

    请记住,url 必须指向视图。但是在您修复此问题后,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 %}  
    

    【讨论】:

    • 非常感谢你的朋友。我很快就疯了:) 非常感谢我给你的好成绩。
    猜你喜欢
    • 2018-06-05
    • 2014-08-18
    • 2019-08-19
    • 2015-01-07
    • 2014-10-25
    • 1970-01-01
    • 2014-04-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多