python - Django:如何在其他 python 脚本中使用表单值?
问题描述
这是我的views.py
from django.shortcuts import render
from .reisplanner import *
def home(request):
return render(request, 'home.html', {})
def reisplanner(request):
if request.method == 'POST':
form = reisplannerForm(request.POST)
if form.is_valid():
beginstation = form.cleaned_data['beginstation']
eindstation = form.cleaned_data['eindstation']
print(beginstation, eindstation)
else:
form = reisplannerForm()
return render(request, 'reisplanner.html', {'form': form})
这是forms.py
from django import forms
class reisplannerForm(forms.Form):
beginstation = forms.CharField(required=True)
eindstation = forms.CharField(required=True)
我想使用变量reisplanner.py
def reisplanner():
#
# use the values of the form here
#
我已经尝试了一切,这是一个学校项目,并且已经尝试解决这个问题大约 2 天,但没有任何结果。
如果你们能帮助我,那就太好了。如何将表单的值传递给我的 python 脚本?
解决方案
在reisplanner.py
def my_reisplanner(form):
beginstation = form.cleaned_data['beginstation']
eindstation = form.cleaned_data['eindstation']
# Do somthing with the values
在views.py
from django.shortcuts import render
from .reisplanner import *
def home(request):
return render(request, 'home.html', {})
def reisplanner(request):
if request.method == 'POST':
form = reisplannerForm(request.POST)
if form.is_valid():
beginstation = form.cleaned_data['beginstation']
eindstation = form.cleaned_data['eindstation']
print(beginstation, eindstation)
# You can call this function because you imported it in line 2
my_reisplanner(form)
else:
form = reisplannerForm()
return render(request, 'reisplanner.html', {'form': form})
这里唯一的问题是要调用的函数的名称。如果您对视图函数和流程函数使用相同的名称,您将遇到导入问题。
在前面的代码片段中,我重命名了 process 函数my_reisplanner
以避免任何冲突。如果您不想(或不能)重命名流程功能(见下文),还有其他解决方案。
一般来说,不鼓励这种导入
from .reisplanner import *
因为您无法控制导入的内容。更喜欢这个:
from .reisplanner import reisplanner as reisplanner_name_alias
# [...]
# Call reisplanner using local alias created from imports
reisplanner_name_alias()
或者干脆
from . import reisplanner
# [...]
# Call reisplanner using full modul dotted path
reisplanner.reisplanner()
推荐阅读
- java - 如何从函数应用程序中的 TLS/SSL 证书中读取证书以使用 Java 代码进行 HTTPS 调用
- eiffel - EiffelStudio 最终确定并启用合同
- r - 向数据表添加常规按钮 - 闪亮的应用程序
- python - 用 MemoryError 覆盖两个 pcolormesh 图
- ruby-on-rails - 如何使用 Github 操作让 Selenium 测试在 Rails 中运行?
- python - 如何在没有明确命令的情况下在 Pycharm 中打印?
- powerbi - Power BI 滚动 12 个月没有什么可计算的?
- swift - SwuiftUI 折叠多行文本
- python - 如何使用 librosa 提供的背景音乐从歌曲中提取人声
- python - 从 txt 输出中解析多行