Как сделать функциональность присоединения к группе и выхода из нее в Django?
def join_group(request,pk):
group = Room.objects.get(id=pk)
group.members.add(request.user)
return redirect('home')
urls.py
path('create_group', views.create_group, name="create-group"),
path('group/<str:pk>', views.group, name="group"),
path('join_group/<str:pk>', views.join_group, name="join_group"),
feed.html
<a href="{% url 'join_group' group.id %}">
<p class="roomListRoom__topic">
Join
</p>
</a>
У меня есть группа в моем приложении. Я хотел сделать функциональность вступления и выхода. Функциональность присоединения работает правильно, но я хочу сделать так, чтобы когда кто-либо нажимал на (присоединиться), то он должен быть перенаправлен в эту конкретную группу, когда я изменяю return redirect на ' return redirect ('group/' + str(pk)) ' то я получаю url типа 127.0.0.1:8000/join_group/group/8.....
и я хочу сделать так, чтобы если пользователь присоединился к группе, то вместо join и join для других пользователей должно быть joined. - используя оператор if
и я хочу сделать функциональность leave:
пожалуйста, помогите мне избавиться от этих проблем. если вам нужна дополнительная информация. я готов
заранее спасибо!!!
Здесь есть несколько вопросов, поэтому я разделил их ниже:
URL redirect not working - Ваше перенаправление не начинается с прямой косой черты, поэтому путь, который вы указываете для перенаправления, будет добавлен к текущему пути - поэтому у вас сейчас
join_group/group/8
- ваши варианты - добавить косую черту или использовать имена URL, например, так:redirect('group', pk=pk)
Это лучший способ управления URL, чем их жесткое кодирование.
Показывать 'Joined' в представлении группы - вы хотите показать в шаблоне, что человек является членом этой группы, вы можете достичь этого, сделав следующее:
{% if request.user in room.users.all %} # show joined or leave {% else %} # show join button {% endif %}
Это может выглядеть несколько иначе в зависимости от того, какое поле связывает пользователя и комнату.
Создайте представление 'Leave' - вы можете сделать то же самое, что и в представлении join, но в обратном порядке:
group.members.remove(request.user)