我是django的初学者,所以请裸露在我身边。所以,我想从模板(下拉窗体)传递一些变量到视图函数。视图功能是不一样的,它有不同的视图功能。我在stackoverflow上看到类似的问题,但无法找出解决方案,因为我想在这里发布我的问题。对不起,如果有重复。将变量从模板传递到视图函数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()函数。我知道一件事,我必须通过网址传递值,但我无法做到这一点。
必须有一些愚蠢的,我在这里失踪,但请帮助我。我困在此。
谢谢,问候。
通常'request.GET'(在视图中)从模板捕获列表中的变量。 – ruddra
是的,我得到那部分。但是,是否应该在表单动作部分传递任何东西,以便我跳转到所需的视图方法? – ravihemnani
这就是你想要放置在表单动作中的url。使用该网址,您可以访问所需的视图 – ruddra