【问题标题】:Why are my Django model images not being output为什么我的 Django 模型图像没有输出
【发布时间】:2019-11-04 17:41:55
【问题描述】:

这是我的代码 视图.py

def search(request):
    if request.method == 'GET':
        try:
            q = request.GET.get('search_box', None)
            posts = Listing.objects.filter(title__contains=q, is_live=1) | \
                    Listing.objects.filter(street_address__contains=q, is_live=1) | \
                    Listing.objects.filter(city__contains=q, is_live=1) | \
                    Listing.objects.filter(state=q, is_live=1) | \
                    Listing.objects.filter(property_class__contains=q, is_live=1) | \
                    Listing.objects.filter(sale_or_lease__contains=q, is_live=1)
            return render_to_response('search/results.html', {'posts': posts, 'q': q})
        except KeyError:
            return redirect('home')

结果.html:

<div class="container" style="width:20%; float:right; text-align:center; overflow:auto;">
            {% for Listing in posts %}
                <a href="{% url 'post_view' Listing.pk %}"><img style="width: 384px; height: 216px;" alt="Thumbnail"
                                                                src="{{ MEDIA_URL }}{{ Listing.thumbnail }}"/></a>
                <p style="color:black;">{{ Listing.title }}</p>
                <p style="color:black;">Sale or Lease: {{ Listing.sale_or_lease }}</p>
                <p style="color:black;">Class: {{ Listing.property_class }}</p>
                <p style="color:black;">Square Feet: {{ Listing.square_feet }}</p>
                {% if Listing.price %}
                    <p style="color:black;">Price: ${{ Listing.price|linebreaksbr }}</p>
                {% endif %}
                {% if Listing.price_per_square_foot_per_year %}
                    <p style="color:black;">Price per SqFt/yr:
                        ${{ Listing.price_per_square_foot_per_year|linebreaksbr }}</p>
                {% endif %}
                <p style="color:black;"> City: {{ Listing.city }}, {{ Listing.state }}</p>
                <hr>
            {% endfor %}
        </div>

对于上面的代码,Listing.thumbnail 没有被输出,只有占位符文本被输出。这是我正在运行的代码示例。

views.py

def preview(request, pk):
    posts = Listing.objects.all().filter(is_live=1)
    preview = get_object_or_404(Listing, pk=pk)
    attorneys = Attorneys.objects.all().filter(state=preview.state) | \
                Attorneys.objects.all().filter(city=preview.city)
    lenders = Lenders.objects.all().filter(state=preview.state) | \
              Lenders.objects.all().filter(city=preview.city)
    developers = Developers.objects.all().filter(state=preview.state) | \
                 Developers.objects.all().filter(city=preview.city)
    context = {'posts': posts,
               'preview': preview,
               'pk': preview.pk,
               'attorneys': attorneys,
               'lenders': lenders,
               'developers': developers}
    return render(request, 'preview.html', context)

preview.html

<div class="container" style="width:20%; float:right; text-align:center;">
            <a href="{% url 'post_view' pk %}"><img style="width: 384px; height: 216px;" alt="Thumbnail"
                                                    src="{{ MEDIA_URL }}{{ preview.thumbnail }}"/></a>
            <p style="color:black;">{{ preview.title }}</p>
            <p style="color:black;">Sale or Lease: {{ preview.sale_or_lease }}</p>
            <p style="color:black;">Class: {{ preview.property_class }}</p>
            <p style="color:black;">Square Feet: {{ preview.square_feet }}</p>
            {% if preview.price %}
                <p style="color:black;">Price: ${{ preview.price }}</p>
            {% endif %}
            {% if preview.price_per_square_foot_per_year %}
                <p>Price per SqFt/yr: ${{ preview.price_per_square_foot_per_year }}</p>
            {% endif %}
            <p style="color:black;"> City: {{ preview.city }}, {{ preview.state }}</p>

            ...

</div>

感谢任何帮助,我认为这可能与 render_to_response 有关,但我不确定。

【问题讨论】:

  • 检查呈现的 html 时会显示哪些 src URL?
  • 没有媒体url的图片文件,为什么没有输出媒体url?
  • 设置好了吗?您可以将 settings.MEDIA_URL 打印到控制台吗?
  • 啊,我在移动自动取款机上,所以无法测试,但这可能是因为您使用的是render_to_response,而不是render。如果是这样,我稍后会添加一个答案,希望能解释原因..

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


【解决方案1】:

我的问题是使用 render_to_response 而不是渲染。将其切换为render 并传递request 解决了我的问题。现在看起来像:

def search(request):
    if request.method == 'GET':
        try:
            q = request.GET.get('search_box', None)
            posts = Listing.objects.filter(title__contains=q, is_live=1) | \
                    Listing.objects.filter(street_address__contains=q, is_live=1) | \
                    Listing.objects.filter(city__contains=q, is_live=1) | \
                    Listing.objects.filter(state=q, is_live=1) | \
                    Listing.objects.filter(property_class__contains=q, is_live=1) | \
                    Listing.objects.filter(sale_or_lease__contains=q, is_live=1)
            return render(request, 'search/results.html', {'posts': posts, 'q': q})
        except KeyError:
            return redirect('home')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-21
    • 1970-01-01
    • 2020-05-21
    • 1970-01-01
    • 1970-01-01
    • 2014-06-15
    相关资源
    最近更新 更多