是否有任何方法可以在每次页面重新加载时获取随机上下文?

时间:2019-02-13 08:50:25

标签: python

目标是在重新加载页面时使index.html获得随机上下文。我不知道该怎么搜索。我尝试将QuerySet转换为json,以便在index.html的脚本标记中使用它。

models.objects.ordered_by('?')。first()

views.py

class IndexView(TemplateView):
    template_name = 'index.html'
    model = models.Meal
    recommended_meal = models.Meal.objects.ordered_by('?').first()

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context["recommended_meal"] = self.context
        return context

index.html

此代码存在于{%block%}~{%endblock%}

之间
<div class="container">
    <div class="picture_food">
      <a href="%url  "> <img src="{{recommended_meal.meal_photo.url}}" class = "img-rounded"></a>
      <h1>{{recommended_meal.meal_name}}</h1>
      <ul>
        <p>{{recommended_meal.restaurant_name}}</p>
        <p>{{recommended_meal.price_range}}</p>
        <p>{{recommended_meal.satisfaction}}</p>
      </ul>
    </div>
 </div>

当我重新加载index.html页面时,得到的结果是相同的,但是当服务器重新启动时,它就可以工作了。

1 个答案:

答案 0 :(得分:0)

肯定应该是context["recommended_meal"] = self.recommended_meal吗?

我认为问题在于,在定义类时,您正在使用recommended_meal.first()分解为单个固定对象。我建议你试试

context["recommended_meal"] = models.Meal.objects.ordered_by('?').first()

get_context_data方法中。