我在 django 中有两个模板:
首先,我命名为index.html
<html>
<head>
<title>Django</title>
</head>
<body>
<div id="formulir">
<form action="" method="POST" enctype="multipart/form-data">
{% csrf_token %}
<div class="label">Username</div><div class="input"><input type="text" name="username"/></div>
<div class="label">Email</div><div class="input"><input type="text" name="email"/></div>
<input type="submit" name="tambah" value="Add"/>
</form>
</div>
<div id="data">
{% block data %}{% endblock %}
</div>
</body>
</html>
其次,我命名为data.html
{% extends 'index.html' %}
{% block data %}
<table border="1">
<tr>
<th>Username</th>
<th>Email</th>
</tr>
{% for i in data %}
<tr>{{ i.username }}</tr>
<tr>{{ i.email }}</tr>
{% endfor %}
</table>
{% endblock %}
我想做的是当index.html中的表单提交时,数据显示在data.html中,当我第二次提交时data.html显示2条数据,所以第一个数据仍然存在。我不想将数据保存到数据库。
这是我的views.py
from django.shortcuts import render_to_response
from django.template import RequestContext
global data
data = []
def home(request):
if request.POST:
data = data.append(request.POST)
return render_to_response('data.html', locals(), context_instance=RequestContext(request))
return render_to_response('index.html', locals(), context_instance=RequestContext(request))
谁能帮帮我?
请您参考如下方法:
使用全局变量总体上是一种不好的做法,但如果您的应用程序使用一个系统进程运行,您可以使用它:Python Django Global Variables .您可以在 session 中保存数据,或者您需要将所有发布的数据形成并在隐藏的输入中重新发布,例如,如果您需要在不保存任何地方的情况下获取它:
...
<div id="formulir">
<form action="" method="POST" enctype="multipart/form-data">
{% csrf_token %}
<div class="label">Username</div><div class="input"><input type="text" name="username"/></div>
<div class="label">Email</div><div class="input"><input type="text" name="email"/></div>
<input type="submit" name="tambah" value="Add"/>
{% for i in data %}
<input type="hidden" name="username" value="{{ i.username }}"/>
<input type="hidden" name="email" value="{{ i.email }}"/>
{% endfor %}
</form>
</div>
....
要创建 data 变量并使用类似 {{ i.username }} 的代码在模板中访问它,您需要在 View 中添加一些逻辑:
def home(request):
data = []
if request.POST:
username = request.POST.getlist('username')
email = request.POST.getlist('email')
data = [{'username': u, 'email': e} for u, e in zip(username, email)]
return render_to_response('data.html', locals(),
context_instance=RequestContext(request))
return render_to_response('index.html', locals(),
context_instance=RequestContext(request))
