フォルダ構成
project
|
├ __init__.py
├ apps.py
├ models.py
├ routes.py
├ views.py
Modelをつくる
まずはmodels.pyに関数リストをあらわすクラスを規定します。
models.py
from django.db import models
from django.db.models.signals import post_save
class FuncList:
func_id = models.CharField(max_length=50)
callback = models.CharField(max_length=50)
def get_func_id(self):
return self.func_id
def set_func_id(self, func_id):
self.func_id = func_id
self.save()
def get_callback(self):
return self.callback
def set_callback(self, callback):
self.callback = callback
self.save()
DBへの保存/読み出しと動的実行
views.py
# DBへの保存
def save_function(**kwargs):
func_list = FuncList()
func_list.set_func_id(kwargs['func_id'])
func_list.set_callback(kwargs['callback'])
return
# 動的実行
def dynamic_execution(arg1, arg2):
# DBから読みだした関数を実行する関数
def execution_handler(func, **kwargs):
return func(**kwargs)
# DBから関数リスト取得
func_list = FuncList.objects.all()
for i in range(len(func_list)):
# 取得した関数を順番に実行
result = execution_handler(func=eval(func_list[i].callback),
arg1=arg1, arg2=arg2)
return result
あとがき
言葉足らずでしたが見に来てくださりありがとうございました。
本記事で不明な点は以下のサイトなどで補完できます。・・・多分