Django 显示来自 GET 请求的数据

Django Displaying data from GET request

假设我有一个 GET 请求,下面的代码显示了请求的格式

示例:

/?title1=xxx&message1=xxx&file1=xxx&...&titleN=xxx&messageN=xxx&fileN=xxx

以上示例显示来自 GET 请求的数据。

我如何遍历 GET 请求列表并单独显示每个 'requestN' div。

当然这使用 jinja 模板和 django。

我实际上找到了一个只显示两个参数的解决方案。

{% for key, value in GET.items %}
        {% if forloop.counter0|divisibleby:2 %}
                {% include "title_snippet.html" with title=value %}
        {% else %}
                {%  include "message_snippet.html" with message=value %}
        {% endif %}

{% endfor %}

此解决方案仅显示两个参数的数据。但我希望它适用于 N 个参数。

?titre1=titre1&?message1=message1&?titre2=titre2&?message2=message2

我认为在模板端无法轻松解决此问题。您需要在呈现模板时添加一些逻辑。

在你的控制器端。

def myview(request):
    values = []
    for key, value in request.GET.items():
        if key.startswith("title"):
            product = {}
            index_value = key.replace("title","")
            product["title"] = key
            if request.GET.get("message"+index_value):
                product["message"] = request.GET["message"+index_value]
                values.append(product)

    return render_to_response("template.html", {"all_values":values})

在你的模板端,类似

{% for value in all_values %}
    <div >
         {% include "title_snippet.html" with title=value.title %}
         {%  include "message_snippet.html" with message=value.message %}
    </div>
{% endfor %}

解决这个问题的一种方法是在 views.py 中使用正则表达式对可迭代字典中的请求参数进行排序,在模板端你可以

{% for i in all_values %}
<p>
      {% if 'title' in i.keys.0 %}
                {{ i.values.0 }}
      {% endif %}
</p>
{% endfor%}