【问题标题】:Django my models aren't carrying over from file to fileDjango 我的模型没有从一个文件转移到另一个文件
【发布时间】:2016-11-07 17:04:19
【问题描述】:

我正在让我的菜单项显示在 ListView 页面上,但是当我单击链接时,没有任何数据能正确显示。

这是我的 menu-carousel.html

    {% for item in object_list %}
   <li>
      <div class="impx-menu-page-item">
        <div class="impx-menu-page-content">
          <h4><a href="/menu/{{ item.id }}">{{ item.title }}</a></h4>
             <div class="impx-menu-page-price">
              <h5>${{ item.price }}</h5>
             </div>
             <p>{{ item.description }}</p>
        </div>
      </div>
   </li>
  {% endfor %}

这行得通,现在是损坏的部分,当我到达 /menu/1 或 /menu/'whatever number' 时

<div class="container">
        <div class="row">
            <h3><a href="/menu/{{ item.id }}"></a>{{ item.title }}</h3>

        </div>
        <div class="row">
            <div class = "col-sm-12 col-md-4">
                <img src="{{ item.image.url }}" height="300px" width="300px" class = "img img-responsive thumbnail"/>
            </div>
            <div class = "col-sm-12 col-md-4">
                <h6>Price: ${{ item.price }}</h6>
                <h6>Materials: {{ item.description }}</h6>
            </div>
            <div class = "col-sm-12 col-md-4">
                <p>{{ item.description|safe|linebreaks }}</p><br /><br />
                <hr />
                <h5></h5>

            </div>
            <br><br>
        </div>
    </div>

这是在我的浏览器中显示的内容

<div class="container">
    <div class="row">
        <h3><a href="/menu/"></a></h3>

    </div>
    <div class="row">
        <div class = "col-sm-12 col-md-4">
            <img src="" height="300px" width="300px" class = "img img-responsive thumbnail"/>
        </div>
        <div class = "col-sm-12 col-md-4">
            <h6>Price: $</h6>
            <h6>Materials: </h6>
        </div>
        <div class = "col-sm-12 col-md-4">
            <p><p></p></p><br /><br />
            <hr />
            <h5></h5>

        </div>
        <br><br>
    </div>
</div>

这是我的 urls.py

from django.conf.urls import url, include
from django.views.generic import ListView, DetailView
from django.contrib import admin
from . import views
from home.models import Menu


urlpatterns = [
    url(r'^$', views.home, name="home"),
    url(r'^menu/$', ListView.as_view(
                        queryset=Menu.objects.all().order_by("-title")[:25],
                        template_name="menu-carousel.html")),
    url(r'^menu/(?P<pk>\d+)/$', DetailView.as_view(
                        model = Menu,
                        template_name="menu-item.html")),
]

这是我的models.py

from django.db import models
from django.conf import settings

class Menu(models.Model):
    title = models.CharField(max_length = 140)
    price = models.IntegerField()
    description = models.TextField()
    image = models.ImageField(upload_to = 'media/' )
    menu = models.CharField(max_length = 10)

    def __str__(self):
        return self.title

【问题讨论】:

    标签: django listview django-models django-urls detailview


    【解决方案1】:

    我想您在 DetailView 模板中使用了错误的上下文对象名称。更多详情链接:

    https://docs.djangoproject.com/es/1.9/ref/class-based-views/mixins-single-object/#django.views.generic.detail.SingleObjectMixin.get_context_object_name

    尝试使用{{menu.id}} 而不是{{item.id}} 显示菜单项ID。您也可以使用 django 调试模板来查看所有上下文对象。

    【讨论】:

    • 谢谢!那解决了它!现在我只需要弄清楚如何让我的图像正确显示!
    猜你喜欢
    • 2020-12-16
    • 2013-11-06
    • 1970-01-01
    • 2011-08-11
    • 2013-10-28
    • 2019-06-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多