Запуск промежуточного программного обеспечения для определенных ссылок

do Я пытаюсь написать код для сайта социальной сети. Мне нужно, чтобы каждая ссылка на использование проверялась, например, если у пользователя нет подписчиков, то число должно быть равно 0, а если нет подписчиков, то число должно быть равно 0. Это отлично работает для определенных пользователей, но создает проблемы с некоторыми другими, я размещу мой код ниже.

*UserFollowing - это модель, определяющая, кто за кем следует. модели:

`class UserFollowing(models.Model):
    user = models.ForeignKey(User, related_name="following",on_delete=models.CASCADE)
    following_user= models.ForeignKey(User, related_name="followers",on_delete=models.CASCADE)

    created = models.DateTimeField(auto_now_add=True)`

УРЛЫ:

    from django.urls import path
from . import views
from.views import CreatePost

urlpatterns = [
    path('explore/', views.Listexplore.as_view(), name='page-explore'),
    path('user/<str:username>/', views.UserList.as_view(), name='user-posts'),
    path('post/<int:pk>/', views.DetailPost.as_view(), name='post-detail'),
    path('post/<int:pk>/update/', views.UpdatePost.as_view(), name='post-update'),
    path('post/<int:pk>/delete/', views.DeletePost.as_view(), name='post-delete'),
    path('post/create/', CreatePost.as_view(), name='post-create'),
    path('about/',views.about,name='page-about'),
    path('home/',views.Listhome.as_view(),name='page-home'),
    path('tests/',views.test,name="page-test"),


]

view:

def post(self, request,**kwargs):
    user2 = get_object_or_404(User, username=self.kwargs.get("username"))

    try:
        UserFollowing.objects.get(following_user=user2, user=request.user)
        created = UserFollowing.objects.get(following_user=user2, user=request.user)
        created.delete()
        request.user.profile.follower -= 1
        user2.profile.following -= 1
        request.user.save()
        user2.save()

    except UserFollowing.DoesNotExist :
        created = UserFollowing.objects.create(following_user=user2, user=request.user)
        request.user.profile.follower += 1
        user2.profile.following += 1
        created.save()
        request.user.save()
        user2.save()

    return redirect(request.META['HTTP_REFERER'])

def get_queryset(self):
    user = get_object_or_404(User, username=self.kwargs.get("username"))
    return post.objects.filter(author=user).order_by("-time")


def get_context_data(self, **kwargs):
    context = super(UserList, self).get_context_data(**kwargs)
    context['user2'] = get_object_or_404(User, username=self.kwargs.get("username"))
    my_user= User.objects.get(username=self.request.user.username)
    try:
        UserFollowing.objects.get(following_user=context['user2'], user=my_user)
        follow=True
    except UserFollowing.DoesNotExist :
        follow=False

    context['follow']=follow
    return context

the middleware i wrote:

    from django.http.response import HttpResponseForbidden
from django.shortcuts import get_object_or_404
from django.http.response import HttpResponse
from django.http import HttpRequest
from .models import User,UserFollowing

def follow_middleware(get_response):
    def middleware(request):
        response = get_response(request)
        if 'user' in request.path_info:
            username=request.path_info.split('/')
            username=username[2]
            user2 = get_object_or_404(User, username=username)
            if len(UserFollowing.objects.filter(following_user=user2)) == 0:
                user2.profile.following = 0
            if len(UserFollowing.objects.filter(user=user2)) == 0:
                user2.profile.follower = 0
            user2.save()
        return response
    return middleware

любая помощь будет признательна

редактирование:

Мне удалось решить эту проблему, единственная проблема в том, что если я удаляю все объекты, цифры восстанавливаются, только если я перезагружаю страницу

что мне делать?

Вернуться на верх