Пользовательское промежуточное ПО Django выполняется дважды - PullRequest
0 голосов
/ 06 марта 2019

Я пишу промежуточное программное обеспечение для отслеживания активности пользователей путем записи его в файл;страницы, которые он посетил, кнопки нажимали и так далее и тому подобное.Чтобы проверить мое промежуточное программное обеспечение, я просто пишу сообщение в файл.Но по какой-то причине сообщение записывается дважды в файл.И я на django 1.11

Вот мое промежуточное ПО:

from django.http import HttpResponse
import datetime


class TodoappMiddleware(object):
    def __init__(self, get_response):
        self.get_response = get_response

    def __call__(self, request):
        f = open("--my file path--", 'a')
        date_and_time = datetime.datetime.now()
        f.write('\n')
        f.write(str(date_and_time))
        f.write('\tMiddleware successfully executed\n')
        f.close()

        response = self.get_response(request)

        return response

РЕДАКТИРОВАТЬ: Должен знать, что перенаправление заставляет промежуточное ПО выполняться дважды,Вот мои представления, которые используют HttpResponseRedirect

def login_user(request):
    if request.method == 'POST':
        login_form = Login(request.POST)
        if login_form.is_valid():
            email = login_form.cleaned_data['email']
            password = login_form.cleaned_data['password']
            User.objects.get(email=email)
            user = authenticate(email=email, password=password)
            if user is not None:
                if user.is_active:
                    login(request, user)
                    return HttpResponseRedirect(reverse('dashboard'))
                else:
                    return HttpResponse("<h2>Waiting for admin to authenticate you</h2>")
        else:
            return render(request, 'registration/login.html', {'errors': login_form.errors})

    return render(request, 'registration/login.html', {'form': Login()})


@login_required
def logout_user(request):
    logout(request)
    return redirect('login_user')

Какие изменения мне нужно сделать, чтобы промежуточное программное обеспечение выполнялось только один раз?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...