【发布时间】:2020-08-26 20:19:03
【问题描述】:
我有以下问题要问你。我想知道在另一个视图中重用在视图中获得的一些可变结果的最佳和优雅的方法。
我试图用一个例子更好地解释我。
我有 2 个不同的应用程序,应用程序 A 和应用程序 B。
在应用程序Aviews.py 中,我有很多代码来处理来自模型的数据,并创建了很多新变量。
现在,在应用程序B 中,我有必要重用在views.py 应用程序A 中获得的一些变量,但我不会再次编写相同的代码来获取它们。
有没有办法实现我的目标?
编辑
按照@sandeshdaundkar 的建议,我可以克服创建新函数并在每个应用程序的views.py 中调用它的问题。
我正在尝试实现这个结果,但我不擅长 python 的功能以及如何在我的views.py 中调用它。
我在 my_app/utility.py 中创建了以下函数:
def my_func():
defaults = list(0 for m in range(13))
iva_debito = dict()
for year, month, totale in(Ricavi.objects.values_list( 'data_contabile__year', 'data_contabile__month').
annotate(totale=ExpressionWrapper(Sum(F('quantita') * F('ricavo')*(F('iva'))),
output_field=FloatField())).values_list('data_contabile__year', 'data_contabile__month', 'totale')):
if id not in iva_debito.keys():
iva_debito[id]=list(defaults)
index=month
iva_debito[id][index]=totale
iva_debito_totale={'IVA a Debito Totale': [sum(t) for t in zip(*iva_debito.values())],}
context= {
'iva_debito_totale':iva_debito_totale,
}
return context
这里是我的 my_app/views.py: ... 从 .utility 导入 my_func
def iva(request):
data = my_func()
iva_debito_totale=data['iva_debito_totale']
context= {
'iva_debito_totale': iva_debito_totale,
}
return render(request, 'iva/iva.html', context)
我已经用上面的解决方案解决了。
【问题讨论】:
-
创建一个在视图外执行通用计算的函数,并在两个视图内调用该函数
-
谢谢,功能在哪些文件夹?
-
您可以在同一个 Django 应用程序文件夹中创建一个
utils.py文件并在视图中导入或将函数写入views.py本身。只要确保你的函数参数是正确的。 -
啊,谢谢,我是 python 新手,你能否为我的视图做一个函数示例(只有一个变量)以及如何在我的视图中使用它?
-
好的,让我检查一下。
标签: django django-models django-rest-framework django-forms django-views