【问题标题】:Get Direct URL for uploads in search - Wagtail在搜索中获取上传的直接 URL - Wagtail
【发布时间】:2020-12-10 22:23:13
【问题描述】:

我已自定义搜索以查看图像和文档作为该搜索的一部分。这工作正常。但是,我不确定如何获取返回的上传图像/文档的 URL。理想情况下,浏览器中会有一个下载/显示的链接。我对 ../media/images/xxx 网址没问题。但我似乎无法弄清楚如何在模板中获取这些数据。想法?搜索由此执行。

    # Search
if search_query:
    results = []
    page_results = Page.objects.live().search(search_query)
    if page_results:
        results.append({'page': page_results})
    doc_results = Document.objects.all().search(search_query)
    if doc_results:
        results.append({'docs': doc_results})
    img_results = Image.objects.all().search(search_query)
    if img_results:
        results.append({'image': img_results})
    search_results = list(chain(page_results, doc_results, img_results))
    query = Query.get(search_query)

    # Record hit
    query.add_hit()
else:
    search_results = Page.objects.none()

html 看起来像这样

    {% if search_results %}

{{ count }} results found.
    {% for result in search_results %}
        {% for k, v in result.items %}
            {% if k == 'page' %}
                {% for item in v %}
                    <p>
                    <h4><a href="{% pageurl item %}">{{ item }}</a></h4>
                    Type: Article<br>
                    Author: {{ item.specific.owner.get_full_name }}<br>
                    Publish Date: {{ item.specific.last_published_at}} 
                    </p>
                {% endfor %}

            {% elif k == 'docs' %}
                {% for item in v %}
                    <p>
                    <h4><a href="">{{ item.title }}</a></h4>
                    Type: Document<br>
                    Publish Date: {{ item.created_at }}
                    </p>
                {% endfor %}
            {% elif k == 'image' %}
                {% for item in v %}
                    <p>
                    <h4><a href="">{{ item.title }}</a></h4>
                    Type: Image<br>
                    Publish Date: {{ item.created_at }}
                    </p>
                {% endfor %}
            {% endif%}
        {% endfor %}
    {% endfor %}


    {% if search_results.has_previous %}
        <a href="{% url 'search' %}?query={{ search_query|urlencode }}&amp;page={{ search_results.previous_page_number }}">Previous</a>
    {% endif %}

    {% if search_results.has_next %}
        <a href="{% url 'search' %}?query={{ search_query|urlencode }}&amp;page={{ search_results.next_page_number }}">Next</a>
    {% endif %}
{% elif search_query %}
    No results found
{% endif %}

【问题讨论】:

    标签: django wagtail wagtail-search


    【解决方案1】:

    Django 为文件和图像提供url 属性,wagtail 也有这个。

    {{ item.url }}
    

    Wagtail 非常支持重定向到文件,并且还集成了 django-sendfile。这两种方法都允许下载图片。

    https://docs.wagtail.io/en/stable/advanced_topics/images/image_serve_view.html

    从 wagtail.images.views.serve 导入 ServeView

    urlpatterns = [ ...

    re_path(r'^images/([^/]*)/(\d*)/([^/]*)/[^/]*$', ServeView.as_view(action='redirect'), name='wagtailimages_serve'),
    

    ]

    ** 在下面编辑 生成图像“作为 foo”访问各个属性 - 访问底层图像实例

    {% image item original as item_img %}
    
    {{ item_img.url }}
    

    【讨论】:

    • 谢谢。不幸的是 item.url 是一个无效的标签。所以我怀疑我的视图没有找到图像或文档的 URL。我已经追了几个星期了。不喜欢鹡鸰。
    • 我更新了答案,包括使用 wagtail 标签来访问图像。希望这会有所帮助。
    • 优秀。那成功了。我会注意到我必须将 {% load wagtailimages_tags %} 添加到我的模板页面才能获取标签。你知道是否有文件的等价物吗?我在文档中找不到。
    • 也许尝试使用 Document.objects.all().specific()?如果您使用的是自定义文档模型。
    • 不是自定义模型,只是用于 PDF 等内容的普通上传。本例中的 Document.object 来自 wagtail.documents.models。但是尝试对鹡鸰和文件进行任何形式的搜索只会让人头疼。无论如何,你已经解决了这个线程的问题。谢谢。
    猜你喜欢
    • 2018-01-25
    • 1970-01-01
    • 2012-04-01
    • 1970-01-01
    • 2018-04-21
    • 1970-01-01
    • 1970-01-01
    • 2013-11-02
    • 1970-01-01
    相关资源
    最近更新 更多