我们假设我有一个GET
请求,下面的代码显示了请求的格式
示例:
/?title1=xxx&message1=xxx&file1=xxx&...&titleN=xxx&messageN=xxx&fileN=xxx
上面的示例显示GET
请求中的数据。
我如何遍历GET
请求列表并显示每个请求N'在它自己的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
答案 0 :(得分:2)
我不认为这在模板方面很容易解决。渲染模板时需要设置一些逻辑。
在控制器端。
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 %}
答案 1 :(得分:1)
解决此问题的一种方法是使用正则表达式在views.py和模板方面的可迭代字典中对请求参数进行排序
msg.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
//here you will get the state of edittext before a change took place
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
// here is the best place to check the length of the valu form edit text on the go.
// check whether the length is greater than 15
// and if yes send to server.
//[ MAY BE A BOOLEAN FLAG CAN MAKE YOUR JOB MUCH EASIER]
// Else you can show the error message
if(msg.getText().length()>15){
VALID_MESSAGE = true;
}
else{
msg.setError("Enter valid Message");
VALID_MESSAGE = false;
}
}
@Override
public void afterTextChanged(Editable editable) {
}
});