2016-11-02 4 views
0

Я хотел бы записать все изменения в файл, который пользователь делает. Пользователи меняют данные в основном с помощью общих представлений. (DeleteView, UpdateView, CreateView), и я должен отслеживать все изменения.Зарегистрировать активность пользователя в файле Django

Например:

[timestamp] User: [username] added [all] [additions] [to] [database] [here] 

[timestamp] User: [username] deleted [all] [deleted] [fields] 

[timestamp] User: [username] edited [old] [fields] to [new] [data] [fields] 

Там может быть даже больше информации (например, пользователи полное имя и т.д.), но я по крайней мере стараюсь держать этот вопрос просто. Также журнал должен работать в производстве по понятным причинам. До сих пор я обнаружил, что сообщения об ошибках и т. Д. Записываются в файлы или консоль. Кто-нибудь знает, с чего начать?

+1

Вот хороший учебник: https://docs.python.org /2/howto/logging.html Если у вас есть конкретные вопросы, пожалуйста, спросите их. –

ответ

0

Возможно, вы захотите взглянуть на django-reversion. Это, я бы сказал, одно из наиболее популярных решений для аудита изменений.

Самый простой пример использования, будет выглядеть следующим образом:

  1. зарегистрировать модель с реверсии:

    import reversion 
    
    @reversion.register() 
    class YourModel(models.Model): 
        # ... 
        pass 
    
  2. записывать все изменения в представлениях через it's middleware:

    MIDDLEWARE_CLASSES += ('reversion.middleware.RevisionMiddleware',) 
    
  3. (OR) Запись изменяется на decorating specific views:

    from reversion.views import RevisionMixin 
    
    class RevisionFormView(RevisionMixin, FormView): 
        # ... 
        pass 
    
  4. (И/ИЛИ) записи изменений с the context manager:

    with reversion.create_revision(): 
    
        # Save a new model instance. 
        obj = YourModel() 
        obj.name = "obj v1" 
        obj.save() 
    
        # Store some meta-information. 
        reversion.set_user(request.user) 
        reversion.set_comment("Created revision 1") 
    
Смежные вопросы