[英]Passing variable from template to views function in 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传递值,但是我不能正确地做到这一点。
这些值在GET请求中传递回视图。 您可以通过以下方式在views.table函数中访问它们:
if request.GET:
values = request.GET
print values
请记住,模板中选项标签中的value
属性应该是唯一的,以便您可以区分GET请求中的这些变量。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.