Skip to main content
 首页 » 编程设计

python之全局变量 Django

2024年08月28日24hnrainll

我在 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))