用户提交网页数据后从Django在终端上生成命令
我制作了一个简单的Django webapp,它以CharField的形式从用户那里获取两个字符串输出,但这两个字符串需要立即在终端上自动运行,并使用我的“count.py”脚本生成另一个网页(显示我的count.py脚本的结果) 在终端中,在用户提交网页charfield上的data1和data2后,在后端应该像这样生成命令:用户提交网页数据后从Django在终端上生成命令,django,django-forms,django-views,Django,Django Forms,Django Views,我制作了一个简单的Django webapp,它以CharField的形式从用户那里获取两个字符串输出,但这两个字符串需要立即在终端上自动运行,并使用我的“count.py”脚本生成另一个网页(显示我的count.py脚本的结果) 在终端中,在用户提交网页charfield上的data1和data2后,在后端应该像这样生成命令: count.py data1 data2 其中data1、data2来自用户点击网页上的提交按钮后的views.py我需要以某种方式编写代码,在用户点击提交按钮时自
count.py data1 data2
其中data1、data2来自用户点击网页上的提交按钮后的views.py我需要以某种方式编写代码,在用户点击提交按钮时自动生成此终端命令。
下面是my views.py中的代码
def fields (request):
form = first_form(request.POST or None)
data1 = request.POST.get('data1')
data2 = request.POST.get('data2')
if form.is_valid():
#### how should i execute the arguments
'data1' and 'data2' run in terminal with my
'count.py' script #####
return render(request, "first_page.html", {'form': form})
下面是我的count.py的代码:
def count (a, b):
word = False
a = " " + a + " "
b = " " + b + " "
result = 0
for i in range (len (a)-1):
if a[i] == " " and a[i+1] != " ":
word = True
result += 1
else:
word = False
for i in range (len (b)-1):
if b[i] == " " and b[i+1] != " ":
word = True
result += 1
else:
word = False
return result
你可以做:
import subprocess
subprocess.Popen(['python', 'count.py', 'whatever'])
但是,我认为count应该是某个模型的一部分,您应该在视图中调用它如何创建脚本的细节超出了范围,但请尝试导入(导入os),然后执行os.system(“此处的命令”)。至少先在一个简单的.py文件上尝试一下,比如:import os…os.system(“echo$HOME”)。为什么需要从终端运行count.py代码?您应该从视图而不是从commandsyes运行代码,我还觉得应该在views.py中调用count.py。让我试试看,如果行不行就回去。谢谢你,先生!:)如何使count.py成为models.py的一部分,然后将其称为views.py?supprocess.Popen可以同时获取python文件和字符串的列表?py接受两个字符串参数:terminalI中的data1和data2。建议您使用模型视图方法。如果你不想把所有的代码都写在同一个文件中,只需在顶部导入即可。