【发布时间】:2013-08-26 09:44:28
【问题描述】:
我试图在单击start 按钮时打印随机值,并通过单击stop 按钮停止它。 Start 按钮按预期工作,即在单击时打印随机值,但是当单击stop 按钮时,它不会跳出循环(尽管它进入stop 部分)并继续打印随机值。如何停止打印随机值并重新开始。??
我的代码的简短摘要:- 在 views.py 中,请求了 signal 变量,然后将其发送到生成随机数的 generate_random_temperature 函数。生成数字工作正常,但它无法停止生成数字的服务。
我怎样才能阻止它?
HTML 文件
<form type = "POST">
{% csrf_token %}
<input type="text" placeholder = "Enter City Name" id = "city_name">
<input type="submit" value = "start" id="submit">
<input type="reset" value = "Stop" id="stop">
</form>
JS 文件
$(function(){
$("#start").click(function (event) {
event.preventDefault();
$.ajax({
type: "POST",
url: "/dashboard/",
data : { 'city_name' : $("#city_name").val(),
'signal' : "True"
},
});
});
$("#stop").click(function (event) {
event.preventDefault();
$.ajax({
type: "POST",
url: "/dashboard/",
data : { 'city_name' : $("#city_name").val(),
'signal' : "False"
},
});
});
});
services.py
def generate_random_temperature(city_name, status):
city = City.objects.filter(city_name = city_name)
for data in city:
status = data.status
print status
if status == "True" :
while(1):
print randrange(1,51)
time.sleep(5)
elif status == "False" :
print "Exiting"
views.py
def dashboard(request):
if request.is_ajax():
status = request.POST['status']
city_name = request.POST['city_name']
city = City.objects.filter(city_name = city_name)
for data in city:
data.status = status
data.save()
generate_random_temperature(city_name, status)
ctx = {}
return render_to_response('dashboard/dashboard.html',ctx, context_instance = RequestContext(request))
输出
True // When Start button is clicked, service is started
25
13
False // When Stop button is clicked, it enters the else section, prints Exiting , but then again starts printing numbers. It does not breaks out of the while loop.
Exiting
[23/Aug/2013 05:38:33] "POST /dashboard/ HTTP/1.1" 200 2363
45
25
26
31
【问题讨论】:
-
表示每次条件为 True ,而 1 也表示每次满足 1 ,所以它会打印随机数直到无穷大。
-
但我也添加了一个
break,它不会执行(尽管当条件为“false”且具有中断条件时流程进入else部分)? -
条件“假”表示点击停止按钮时
-
你有没有尝试在循环之前添加一些异常
-
检查新的解决方案