如何使用用户输入作为参数运行 .py 脚本
Posted
技术标签:
【中文标题】如何使用用户输入作为参数运行 .py 脚本【英文标题】:how to run .py script with user input as parameters 【发布时间】:2017-12-31 21:24:30 【问题描述】:我有一个 .py 文件,比如“car.py”。它需要 3 个输入(颜色、品牌、年份)。它接受用户输入并读取文件,然后返回输入中给出的颜色、品牌和年份的所有匹配实例。该脚本运行良好。
现在,我想创建一个类似于搜索页面的网页。它要求 3 个输入,搜索文件(本地)并返回结果。
我是第一次使用 Django,我很难弄清楚如何调用 car.py 文件并让它在返回结果之前在后台运行。
我制作了一个 html 界面,但我知道我无法在其中引用 python 脚本。 Django中有类似的东西吗?我可以在哪里引用脚本,当按下按钮时,它会在给定用户输入的情况下运行该脚本?
我不希望得到完整的编码响应,我只是想要澄清或参考答案。我一直无法在网上找到类似的东西。
【问题讨论】:
您是否尝试在不重新加载/更改当前页面的情况下进行此搜索?在这种情况下,使用 javascript 或其他运行搜索的异步选项可能是正确的。如果您不介意加载新页面,您可以创建一个表单来提交到运行搜索并显示结果的路由/端点。 php 函数exec()
怎么样?你能在 PHP 中处理表单发布并从中执行一个 shell 命令,该命令以用户输入作为参数运行脚本吗?
@Andrew Zick,页面可以重新加载。表单究竟如何提交到路由/端点?能不能稍微扩展一下?
【参考方案1】:
我会把我关于如何在 Django 中提交表单的回复移到这里而不是评论,因为现在它更像是一个答案。
当您提交表单时,通常会向其中包含表单值的网站发送 POST 请求。因此,当我说表单将提交到路由时,我的意思是 POST 请求将被发送到您的 Django 网站中的特定视图,该视图基本上可以是您的 car.py 文件,并进行了一些更改。这是一个表单的an example,它将接受您所需的三个输入,这是一个基本上可以是您的“car.py”的视图的an example,以及a template。
您的观点的粗略示例:
def search_view(request):
if request.method == 'POST':
form = SearchForm(request.POST)
if form.is_valid():
# process the data with your code from "car.py"
# render your results page
return render(request, 'results.html')
# if a GET (or anything else) just render the same search page again
else:
form = SearchForm()
return render(request, 'search.html', 'form': form)
SearchForm() 可以是用户想要的任何值。
【讨论】:
以上是关于如何使用用户输入作为参数运行 .py 脚本的主要内容,如果未能解决你的问题,请参考以下文章