【问题标题】:Cannot render a list in template from django view无法从 django 视图中呈现模板中的列表
【发布时间】:2019-10-02 03:54:14
【问题描述】:

我的所有视图都被正确呈现,但是当我尝试使用迭代来呈现列表时,页面上没有显示任何内容,没有错误。

观点:

from django.shortcuts import render
from haleys_chemist.models import anti_bacterials
from django.http import HttpResponse
from .table import anti_bacterials_Table
from django_tables2 import RequestConfig
from datetime import datetime
from django.http import HttpResponseRedirect
from .forms import notepadform
from django.contrib.auth.decorators import login_required 
from django.views.generic import TemplateView,ListView


class retriever(TemplateView):
    template_name='index.html'
    def expiry_days(self,request):
        expired_drugs= anti_bacterials.objects.all()
        args={'expired_drugs':expired_drugs}
        return render (request, self.template_name,args)

模板(index.html):

                              <h6><i>Drugs about to expire</i></h6>                                
                                {%for expired_drug in expired_drugs%}
                                <ul>
                                    <li>{{expired_drug.Drug_name}}</li>
                                    <li>{{expired_drug.expiry_date}}</li>
                                </ul>
                                {%endfor%}
                            </div>

型号:

class anti_bacterials(models.Model):
    Drug_id= models.IntegerField(primary_key=True);
    Drug_name= models.CharField(max_length=50);
    expiry_date= models.DateField();
    Price_per_mg= models.DecimalField(decimal_places=2, max_digits=20)

我需要在左侧栏中列出过期药物。我知道我已经查询了视图上的所有对象,但我仍然应该获得所有对象名称和到期日期的列表。

【问题讨论】:

    标签: django python-3.x


    【解决方案1】:

    您没有正确使用通用TemplateView

    方法expiry_days 永远不会被调用,因为泛型TemplateView 不知道它。

    只需使用方法get_context_data就可以实现你想要的:

    class retriever(TemplateView):
        template_name='index.html'
    
        def get_context_data(self, **kwargs):
            context = super().get_context_data(**kwargs)
            context['expired_drugs']= anti_bacterials.objects.all()
            return context
    

    详细了解通用 TemplateView in Django's official documentationhere

    【讨论】:

      猜你喜欢
      • 2021-02-14
      • 2019-03-10
      • 2012-11-11
      • 2016-12-06
      • 2014-11-16
      • 2018-09-29
      • 2011-07-25
      • 2014-11-26
      • 2019-04-06
      相关资源
      最近更新 更多