как мне использовать функцию добавления новых друзей, отклонения и удаления друга в моем пользовательском приложении с помощью django?

#python #django #django-models #django-views

#python #django #django-модели #django-просмотры

Вопрос:

Я хочу добавить такие функции, как добавление друга, отправка запроса на добавление в друзья, принятие запросов на добавление в друзья на моем веб-сайте Django

models.py

 from django.db import models
from django.contrib.auth.models import User
from PIL import Image

class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    image = models.ImageField(default='default.jpg', upload_to='profile_pics')
    
    def __str__(self):
        return f'{self.user.username} Profile'
    
    def save(self, *args, **kwargs):
            super().save(*args,**kwargs)

            img = Image.open(self.image.path)

            if img.height > 300 or img.width > 300:
                output_size = (300, 300)
                img.thumbnail(output_size)
                img.save(self.image.path)
    
 

views.py

 from django.shortcuts import render, redirect
from django.contrib import messages
from django.contrib.auth.decorators import login_required
from .forms import UserRegisterForm, UserUpdateForm, ProfileUpdateForm


def register(request):
    if request.method == 'POST':
        form = UserRegisterForm(request.POST)
        if form.is_valid():
            form.save()
            username = form.cleaned_data.get('username')
            messages.success(
                request, f'Your account has been created! You are now able to log in')
            return redirect('login')
    else:
        form = UserRegisterForm()
    return render(request, 'users/register.html', {'form': form})


@login_required
def profile(request):
    if request.method == 'POST':
        u_form = UserUpdateForm(request.POST, instance=request.user)
        p_form = ProfileUpdateForm(request.POST,
                                   request.FILES,
                                   instance=request.user.profile)
        if u_form.is_valid() and p_form.is_valid():
            u_form.save()
            p_form.save()
            messages.success(request, f'Your account has been updated!')
            return redirect('profile')

    else:
        u_form = UserUpdateForm(instance=request.user)
        p_form = ProfileUpdateForm(instance=request.user.profile)

    context = {
        'u_form': u_form,
        'p_form': p_form
    }

    return render(request, 'users/profile.html', context)
 

пожалуйста, помогите мне добавить функции запроса друзей в мой проект, поскольку я новичок в Django, помогите мне, как мне продолжить работу с
этим кодом, добавив упомянутые функции в мой проект.

Комментарии:

1. Спасибо:) было бы более полезно, если бы вы помогли добавить функциональные возможности @Sumithran

2. Создание этих функций так же просто, как создание пользователя. Вам просто нужно спроектировать свою БД в соответствии с вашими требованиями (например, создать таблицу запросов друзей с from_user (экземпляром пользователя) to_user (Экземпляр пользователя), status (поле выбора с принятым, отклоненным, Ожидающим и т. Д.), created , и modified датами и соответствующим образом создать представления). Это может помочь вам получить представление -> medium.com/analytics-vidhya/add-friends-with-689a2fa4e41d

Ответ №1:

Есть пакет под названием django-friendship.

Это позволяет создавать и управлять подписчиками, блоками и двунаправленными дружескими отношениями между пользователями. В нем есть:

Объекты запроса дружбы, которые могут быть приняты, отклонены, отменены или помечены как просмотренные.

Перехваты для простого перечисления всех запросов на добавление в друзья, отправленных или полученных данным пользователем, отфильтрованных по статусу запроса.

Список блокировок для каждого пользователя пользователей, которых они заблокировали.

Теги для включения информации о дружеских отношениях, блоках и подписчиках в ваши шаблоны.

Интеграция с AUTH_USER_MODEL.Validation для предотвращения распространенных ошибок.Более быстрое время отклика сервера за счет кэширования

https://github.com/revsys/django-friendship