在Django中从模板传递变量到视图函数
我想把一些变量从一个模板(下拉表单)传递到一个视图函数。这个视图函数和之前的不同,是另一个视图函数。
下面是 views.py 的内容:
from django.shortcuts import get_object_or_404, render
from django.http import Http404, HttpResponse, HttpResponseRedirect
from polls.models import Choice, Poll
from django.core.urlresolvers import reverse
from django.template import RequestContext, loader
from django.views import generic
from django.core.files import File
import os
#a = []
#c = []
def table(request,host,port):
# host = request.GET['servers']
# port = request.GET['instances']
# os.system("redis-cli -h %(host)s -p %(port)s info > /home/ravi/python/info_file/%(host)s_%(port)s.txt" % locals())
os.system("redis-cli -h %(host)s -p %(port)s info > /home/ravi/python/info_file/%(host)s_%(port)s.txt" % locals())
with open('/home/ravi/python/info_file/%(host)s_%(port)s.txt' % locals()) as f:
a = []
c = []
for line in f:
if not line.startswith('#'):
# line = line.strip()
if line.strip():
b = line.split(':', 1)
a.append(b[0])
c.append(b[1])
context = { 'key': a, 'value': c }
return render(request, 'polls/table.html', context)
f.close()
def redis(request):
print "I am here"
#print request.GET['servers']
return render(request, 'polls/redis.html')
接下来是模板的内容。
redis.html
<form action="{% url polls:table %} " method="get">
<select name="servers">
<option value="" disabled="disabled" selected="selected">Please select the server</option>
<option value="x.x.x.x">server_name</option>
<option value="x.x.x.x">server_name</option>
</select>
<select name="instances">
<option value="" disabled="disabled" selected="selected">Please select the redis instance</option>
<option value="port">redis_instance</option>
<option value="port">redis_instance</option>
</select>
<input type="submit" value="Submit">
</form>
第二个模板。
table.html
{% load multifor %}
{% if key %}
<table border="1" style="width:300px">
{% for x in key; y in value %}
<tr>
<!-- <td>{{ x }}</td> -->
<td>{{ x }}</td>
<td>{{ y }}</td>
</tr>
{% endfor %}
</table>
{% else %}
<p>No info available for this instance.</p>
{% endif %}
下面是我的 urls.py 的内容:
from django.conf.urls import patterns, url
from polls import views
urlpatterns = patterns('',
url(r'^$', views.redis, name='redis'),
url(r'^index/$', views.table, name='table'),
)
我会先在我的本地服务器上加载 redis.html,这个页面会显示两个下拉框和一个提交按钮。我想把在下拉框中选择的值发送到 views.table() 函数。我知道我必须通过 URL 来传递这些值,但我现在还不知道怎么正确地做到这一点。
1 个回答
1
这些值会在一个GET请求中返回给视图。你可以通过以下方式在你的views.table函数中访问它们:
if request.GET:
values = request.GET
print values
记住,在你的模板中,选项标签里的value
属性应该是唯一的,这样你才能在GET请求中区分这些变量。