我想在启动python脚本时创建一个按钮。此脚本打开一个data.txt文件并将其转换为json,以便将来可以将其集成到我的数据库中。
我今天要做的只是创建一个按钮,当点击开始脚本时(如果创建了文件json result.txt,我将检查我的文档,这样我可以检查函数是否有效)。 这就是我所做的:
在urls.py
url(r'whatever^$', views.recup_wos, name='recup_wos'),
在views.py
中def recup_wos(request):
if request.method == 'POST':
import newscript.py
os.system('python newscript.py')
return redirect('accueil')
模板accueil.html
<form action='{% url recup_wos %}' method="POST">
<input value="Executer" type="submit">
</form>
错误消息如下:
Reverse for '' with arguments '()' and keyword arguments '{}' not found. 0 pattern(s) tried: []
我认为错误主要在视图中,可能是语法错误?
我更改了模板和视图。它可以很好地重定向,但脚本不会启动:
def recup_wos(request):
if request.method == 'POST':
os.system('Python newscript.py')
return redirect('../page/accueil')
答案 0 :(得分:4)
在使用带有url模板标记的字符串时,您应该使用引号:
{% url "recup_wos" %}
目前尚不清楚为什么要尝试使用system
运行python脚本。因为它是一个Python脚本,所以
from newscript import do_stuff
def recup_wos(request):
if request.method == 'POST':
do_stuff()
return redirect('../page/accueil')
如果无法做到这一点,那么您可以使用subprocess
而不是os.system
来运行命令。如果它失败了,那么你应该得到一个可能有助于识别问题的追溯。
import subprocess
def recup_wos(request):
if request.method == 'POST':
subprocess.check_call(['python', 'newscript.py']) # nb lowercase 'python'
return redirect('../page/accueil')