Python Django:将外部函数与Django变量一起使用

Python 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

嗨,我是Django和Python的新手,我遇到了一个很大的问题: 我将执行一个Django应用程序,允许我输入两个数字,并使用一个外部函数(一个非常简单的python文件)执行任何数学运算(不管是什么)。我希望在提出问题时澄清:

如何在外部函数中调用我的两个数字,然后将获得的结果导入Django应用程序

我用一些代码解释:

models.py

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)