嗨,我是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)
(目前我插入' des',' x',' y'来自shell)
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不是一个残缺的)
from django.shortcuts import render
from .models import ElementiTab
def tabval(request):
valori = ElementiTab.objects.filter()
return render(request, 'apptabella/tabval.html', {'valori': valori})
我的外部函数,在IDLE Python中,可以工作:
oper.py
a = float(input('a = '))
b = float(input('b = '))
operation = (a+b)/b
print (operation)
实际上,我会讨论一个'一个'和' b'用' x'并且' y' models.py的变量,我只对执行'操作'并将结果放入' res'变量
最后,我在浏览器上显示了我的应用程序(表格),类似于:
| DES | X | Y | RES |
| bla | 1.3 | 0.4 | 0.0 |
| asd | 2.0 | 1.3 | 0.0 |
等 -
RES是我想要显示的列' res' (当然是零) 我已将oper.py放在Django app文件夹中。我试图导入变量等等但没有成功!我没有想法!
一个大"谢谢"那些能帮助我的人!
答案 0 :(得分:2)
正如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)
此处有更多详情:https://docs.djangoproject.com/en/1.7/topics/db/models/#overriding-predefined-model-methods
更新: 可以在此处找到将所有内容联系在一起的示例:https://github.com/kelvinn/externaloperexample
特别是,请查看models.py文件: https://github.com/kelvinn/externaloperexample/blob/master/apptabella/models.py
它如何在第2行和第11行调用/使用'add_divide'函数。