Python Django:将外部函数与Django变量一起使用
嗨,我是Django和Python的新手,我遇到了一个很大的问题: 我将执行一个Django应用程序,允许我输入两个数字,并使用一个外部函数(一个非常简单的python文件)执行任何数学运算(不管是什么)。我希望在提出问题时澄清: 如何在外部函数中调用我的两个数字,然后将获得的结果导入Django应用程序 我用一些代码解释: models.pyPython Django:将外部函数与Django变量一起使用,python,django,variables,import,Python,Django,Variables,Import,嗨,我是Django和Python的新手,我遇到了一个很大的问题: 我将执行一个Django应用程序,允许我输入两个数字,并使用一个外部函数(一个非常简单的python文件)执行任何数学运算(不管是什么)。我希望在提出问题时澄清: 如何在外部函数中调用我的两个数字,然后将获得的结果导入Django应用程序 我用一些代码解释: models.py from django.db import models class ElementiTab(models.Model): des = mod
from django.db import models
class ElementiTab(models.Model):
des = models.CharField(max_length=30)
x = models.FloatField()
y = models.FloatField()
res = models.FloatField(default=0)
(目前我插入shell中的“des”、“x”、“y”)
forms.py
from django import forms
from .models import ElementiTab
class ElementiTabForm(forms.ModelForm):
class Meta:
model = ElementiTab
fields = ('des', 'x', 'y','res' )
其中“des”是一个简单的描述
“x”和“y”是我的两个数字
“res”是我外部功能的结果
views.py(html不是truble)
我的外部函数在空闲Python中工作:
操作性
a = float(input('a = '))
b = float(input('b = '))
operation = (a+b)/b
print (operation)
实际上,我会用models.py的“x”和“y”变量替换“a”和“b”,我只对执行“operation”和将结果放入“res”变量感兴趣
最后,我在浏览器上显示了我的应用程序(一个表格),如下所示:
|DES | X | Y | RES|
|布拉| 1.3 | 0.4 | 0.0|
|asd | 2.0 | 1.3 | 0.0|
等--
RES是我想显示RES的列(当然现在是零)
我已将oper.py放在Django应用程序文件夹中。我尝试导入变量等等,但没有成功!我不知道
向那些能帮助我的人表示衷心的感谢 正如Daniel在评论中提到的,您可以导入任何其他python文件。您需要考虑两件事: 1) 您正在尝试将oper.py作为“import oper.py”或“import oper”导入吗?必须是后者 2) 您可能希望在oper.py中定义一个函数,例如,对上面所写内容的这一细微修改:
def add_divide(a, b):
a = float(a)
b = float(b)
operation = (a+b)/b
return operation
然后可以从views.py调用它,如下所示:
import oper
oper.add_divide(5,10)
如果您在从另一个文件导入时遇到问题,请尝试在views.py中的tabval上方添加函数
更新-我不确定您的目标是否是实际读取外部文件,但是如果x和y来自表单,您通常会执行以下操作:
from django.db import models
class ElementiTab(models.Model):
des = models.CharField(max_length=30)
x = models.FloatField()
y = models.FloatField()
res = models.FloatField(default=0)
def save(self, *args, **kwargs):
self.res = (float(self.x)+float(self.y))/float(self.y)
super(ElementiTab, self).save(*args, **kwargs)
详情如下:
更新:
此处可以找到一个将所有内容联系在一起的示例:
特别是,请查看models.py文件:
以及它如何调用/使用第2行和第11行的“add_divide”函数。我不太清楚您在这里问什么。Django只是Python,您可以导入任何外部模块并调用其函数;但(对我来说)的问题是如何导入并使用任何外部模块。我是新来的。。您能给我一些建议吗?但是在导入Django模块时,您的代码中使用了import fine。为什么导入您自己的模型会有所不同?如果我尝试在models.py中导入oper.py,则会出现“未解决的导入”错误,如果我尝试在oper.py中从models.py导入x和y并设置a=x和b=y,则情况相同。因此,我的问题是如何将“x”、“y”与“a”、“b”和“operation”与“res”连接起来。我必须用不同的方式定义“res”、“a”、“b”?怎么做?当然可以进口!但是我会把以前保存在DB中的'x'和'y'值替换为(5,10),然后我会告诉我的DB res=model.FloatField是'operation'!好的,我必须保存操作结果,谢谢链接!我的目标是从外部文件执行一些“操作”!你想象了一个非常复杂的函数,我无法在models.py中定义它,因为它太长太复杂,无法在那里编写!在这个问题中,我只使用了一个简单的函数作为例子。在Django文档中,我没有找到任何关于我的问题的例子。很抱歉,我是个新手,但如果可能的话,我需要理解这一点。嗨,Beatrix,我花了一些时间写了一个使用外部文件的例子,将我们上面讨论的所有内容结合在一起。如果这对你有帮助,那么请考虑接受答案:你为我这样的“新手”解决了一个非常困难的问题。现在我研究你宝贵的代码:)我不能给你的答案加+1,因为我的声誉只有1!别担心,我们都得从某个地方开始!祝你的冒险好运。
from django.db import models
class ElementiTab(models.Model):
des = models.CharField(max_length=30)
x = models.FloatField()
y = models.FloatField()
res = models.FloatField(default=0)
def save(self, *args, **kwargs):
self.res = (float(self.x)+float(self.y))/float(self.y)
super(ElementiTab, self).save(*args, **kwargs)