我想跟踪模型中的更改,基本上记录views.py中的每个函数..这样对模型所做的任何更改都会反映在日志文件中。
views.py
def func_detail(func):
@wraps(func)
def func_wrapper(*args, **kwargs):
logging.basicConfig(filename='test.log', filemode='a',
format='%(asctime)s,%(msecs)d %(name)s %(levelname)s %(message)s',
datefmt='%H:%M:%S',
level=logging.DEBUG)
print("Inside wrapper. Calling method %s now..."%(func.__name__))
r = func(*args, **kwargs)
logging.getLogger(__name__)
return r
return func_wrapper
class UsersViewSet(viewsets.ViewSet):
@func_detail
def update(self, request, pk=None):
users = get_object_or_404(Mytable, name=pk)
serializer = CheckSerializer(users, data=request.data)
if serializer.is_valid():
serializer.save()
logging.info("Updated required data")
return Response(serializer.data, status=status.HTTP_202_ACCEPTED)
return Response(serializer.data, status=status.HTTP_400_BAD_REQUEST)
**models.py**
class Mytable(DjangoCassandraModel):
name = columns.Text(primary_key=True)
email = columns.Text()
password = columns.Text()
creation_date = columns.DateTime(default=datetime.datetime.today())
modified_on = columns.DateTime(default=datetime.datetime.now)
在Views.py中: 我想做这样的事情:
def func_detail(func):
@wraps(func)
def func_wrapper(*args, **kwargs):
logging.basicConfig(filename='test.log', filemode='a',
format='%(asctime)s,%(msecs)d %(name)s %(levelname)s %(message)s',
datefmt='%H:%M:%S',
level=logging.DEBUG)
if func.__name__ == 'list':
print("This is all the list of objects created by you")
elif func.__name__ == 'create':
print("New user added in %s.%s" %(table.__name__, field.__name__))
elif func.__name__ == 'retrieve':
print("Tried retrieving pk %s" %(pk))
elif func.__name__ == 'update':
print("Updated model fields %s from table %s" %(field.__name__, table.__name__))
elif func.__name__ == 'partial_update':
print("Updated partial data from table %s in fields %s" %(table.__name__, field.__name__))
# print("Inside wrapper. Calling method %s now..."%(func.__name__))
r = func(*args, **kwargs)
logging.getLogger(__name__)
return r
return func_wrapper
例如:如果我更改了我的名字"来自' abc'对于' xyz',它应该反映出对" name"进行了更改。来自' abc'到' xyz'。我不必使用任何第三方套餐。只需在' def func_detail'中添加几行代码这将动态跟踪更改和更新。我是django / python的新手,如果有人有任何想法那么请帮忙。提前致谢。