2013-11-29 4 views
2

Я два шаблона в Джанго:глобальная переменная Джанго

первый, я указать имя 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)) 

кто-нибудь может мне помочь?

+3

Если не сохраняются в базе данных, как бы данные по выживанию запросов? –

+0

Может быть в сессии или по другим причинам – kangfend

ответ

3

Использование глобальных переменных - это плохая практика, но вы можете использовать ее, если ваше приложение запускается с одним системным процессом: Python Django Global Variables. Вы можете сохранить данные в сессии или вы должны поместить все отправленные данные , чтобы сформировать и перепечатывать его в скрытых входах, например, если вам нужно, чтобы получить его без сохранения в любом месте:

... 
<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 }} вам нужно немного логики в представлении:

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)) 
+0

Спасибо @ndpu, что работает .. :) – kangfend

Смежные вопросы