我有一个处理wifi凭据的html页面,并将其写入树莓派3上的interfaces文件。html文件post_list_three.html如下所示
{% extends 'device_interfaces/base.html' %}
{% block content %}
<h2>Static Configuration Page</h2>
<form method="POST" class="post-form">{% csrf_token %}
{{ form.as_p }}
<button type="submit" class="save btn btn-default">Save</button>
</form>
{% endblock %}
base.html如下
{% load static %}
<html>
<body>
<div class="page-header">
<a href="{% url 'post_list_three' %}" class="top-menu"><span class="glyphicon glyphicon$
<h1>Wi-Fi Static Configuration</h1>
</div>
<div class="content container">
<div class="row">
<div class="col-md-8">
{% block content %}
{% endblock %}
</div>
</div>
</div>
</body>
</html>
我有一个python文件tech_scripts.py,该文件写入interfaces文件并检查给定的凭据是否正确才能连接到wifi。用于检查wifi连接的代码在tech_scripts.py中称为一个函数,其代码段如下
def CheckConnection():
ps = subprocess.Popen(['iwconfig'], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
try:
output = subprocess.check_output(('grep', 'ESSID'), stdin=ps.stdout).decode()
status = output.split('ESSID:')[1].split('/')[0]
if status == 'off':
print("Wi-Fi not connected")
return False
else:
print("Wi-Fi connected")
return True
except subprocess.CalledProcessError:
# grep did not match any lines
print("No wireless networks connected")
return False
我想检索以上函数返回的内容(即True或False),并使用上面的post_list_three.html文件中的内容。
如何将此函数返回的内容导入html文件,以便在凭据不正确(即函数返回False)的情况下操纵页面重新加载?
修改
下面的views.py
import subprocess
from django.shortcuts import render
from .models import ConfigInfo
from .forms import ConfigInfoForm
def post_list_three(request):
from .models import ConfigInfo
ConfigInfo.objects.all().delete()
if request.method =="POST":
form =ConfigInfoForm(request.POST)
if form.is_valid():
ConfigInfo=form.save(commit=False)
ConfigInfo.save()
subprocess.Popen(["python3", "/home/pi/tutorial/device_interfaces/tech_scripts.py","-m"])
else:
form=ConfigInfoForm()
return render(request, 'device_interfaces/post_edit.html', {'form':form})