Python如何在查看页面中检查用户是否在组中
我正在创建一个项目,您可以在其中创建和加入组。然而,我似乎无法理解,如果用户没有加入,如何显示“加入”按钮,如果用户已经加入,如何显示“取消加入”按钮。我已经附加了model和group.html页面。请让我知道如何在group.html文件中执行此操作 多谢各位 models.pyPython如何在查看页面中检查用户是否在组中,python,django,Python,Django,我正在创建一个项目,您可以在其中创建和加入组。然而,我似乎无法理解,如果用户没有加入,如何显示“加入”按钮,如果用户已经加入,如何显示“取消加入”按钮。我已经附加了model和group.html页面。请让我知道如何在group.html文件中执行此操作 多谢各位 models.py from django.db import models class User(models.Model): first_name = models.TextField(blank=False, max_
from django.db import models
class User(models.Model):
first_name = models.TextField(blank=False, max_length=20)
last_name = models.TextField(blank=False, max_length=20)
email = models.TextField(blank=False, max_length=20)
password = models.TextField(blank=False, max_length=20)
counter = models.IntegerField(blank=False, null=True)
class Group(models.Model):
name = models.TextField(blank=False, max_length=50)
description = models.TextField(blank=False, max_length=200)
created_at = models.DateField()
updated_at = models.DateField()
creator = models.ForeignKey(User, related_name="creator")
members = models.ManyToManyField(User, related_name="members")
counter = models.IntegerField(blank=False, null=True)
class Meta:
db_table = 'groups'
groups.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>On Group {{group.id}}</title>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
</head>
<body>
<div class="container">
<br>
<a href="/logout">Logout</a>
<span>|</span>
<a href="/dashboard">Dashboard</a>
<form action="/leave" method="post">
{%csrf_token %}
<input type="hidden" name="user_id" value="{{ request.session.user_id }}">
<input type="hidden" name="group_id" value="{{ group.id }}">
<input type="submit" value="Leave">
</form>
<form action="/join" method="post">
{%csrf_token %}
<input type="hidden" name="user_id" value="{{ request.session.user_id }}">
<input type="hidden" name="group_id" value="{{ group.id }}">
<input type="submit" value="Join">
</form>
<table class="table class table-striped table-bordered table-hovered table-hover">
<thead>
<tr>
<th>Group Name</th>
<th>Group Description</th>
<th>Group Members</th>
<th>Group Creator</th>
</tr>
</thead>
<tbody>
<tr>
<td>{{group.name }}</a></td>
<td>{{group.description}}</td>
<td>{{group.members.count}}</td>
{% if group.creator.id == request.session.user_id %}
<td>You</td>
{% else %}
<td>{{group.creator.first_name}}</td>
{% endif %}
</tr>
</tbody>
</table>
<h4>Members</h4>
<table class="table class table-striped table-bordered table-hovered table-hover">
<thead>
<tr>
<th>Member First Name</th>
<th>Member Last Name</th>
</tr>
</thead>
<tbody>
{% for member in group.members.all %}
<tr>
<td>{{member.first_name}}</td>
<td>{{member.last_name}}</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</body>
</html>
关于组{{Group.id}
|
{%csrf_令牌%}
{%csrf_令牌%}
组名
组描述
小组成员
组创建者
{{group.name}
{{group.description}}
{{group.members.count}
{%if group.creator.id==request.session.user\u id%}
你
{%else%}
{{group.creator.first_name}
{%endif%}
成员
成员名
会员姓氏
{group.members.all%中的成员为%s}
{{成员.名字}
{{成员.姓氏}
{%endfor%}
您可以在应用程序文件夹的templatetags文件夹下执行以下过滤操作:
from django import template
register = template.Library()
@register.filter
def has_group(user, group_name):
return user.groups.filter(name=group_name).exists()
在模板中,类似于:
{% if user|has_group:'groupName' %}
<button></button>
{% else %}
<p> Not in group </p>
{% endif %}
{%如果用户|有_组:'groupName%}
{%else%}
不在一起
{%endif%}
希望这有帮助。编辑:
我可以问一个可能对你有帮助的问题吗。为什么不使用django.auth提供的用户模型?您可以在应用程序文件夹的templatetags文件夹下执行以下筛选:
from django import template
register = template.Library()
@register.filter
def has_group(user, group_name):
return user.groups.filter(name=group_name).exists()
在模板中,类似于:
{% if user|has_group:'groupName' %}
<button></button>
{% else %}
<p> Not in group </p>
{% endif %}
{%如果用户|有_组:'groupName%}
{%else%}
不在一起
{%endif%}
希望这有帮助。编辑:
我可以问一个可能对你有帮助的问题吗。为什么不使用django.auth提供的用户模型?您可以在应用程序文件夹的templatetags文件夹下执行以下筛选:
from django import template
register = template.Library()
@register.filter
def has_group(user, group_name):
return user.groups.filter(name=group_name).exists()
在模板中,类似于:
{% if user|has_group:'groupName' %}
<button></button>
{% else %}
<p> Not in group </p>
{% endif %}
{%如果用户|有_组:'groupName%}
{%else%}
不在一起
{%endif%}
希望这有帮助。编辑:
我可以问一个可能对你有帮助的问题吗。为什么不使用django.auth提供的用户模型?您可以在应用程序文件夹的templatetags文件夹下执行以下筛选:
from django import template
register = template.Library()
@register.filter
def has_group(user, group_name):
return user.groups.filter(name=group_name).exists()
在模板中,类似于:
{% if user|has_group:'groupName' %}
<button></button>
{% else %}
<p> Not in group </p>
{% endif %}
{%如果用户|有_组:'groupName%}
{%else%}
不在一起
{%endif%}
希望这有帮助。编辑:
我可以问一个可能对你有帮助的问题吗。为什么不使用django.auth提供的用户模型?变量成员是什么?元组?名单?字符串?我猜是查询集。变量成员是什么?元组?名单?字符串?我猜是查询集。变量成员是什么?元组?名单?字符串?我猜是查询集。变量成员是什么?元组?名单?一个字符串?我想这是一个查询集。如果我知道这个组的名称,这难道不管用吗?我需要它为所有可能存在的组工作。如果你有组的id,你可以做同样的事情。你只需要稍微改变一下过滤器。您可以将组的完整查询集作为参数传递,并循环应用筛选器的所有组。如果我不清楚,我可以根据您的代码编写一些可能有效的内容。是的,我不确定如何实现。有没有一种更简单的方法来检查会话用户的id是否在组中,以及他们是否在组中,然后只显示取消连接?我认为最干净的方法是过滤方法。如果我知道组的名称,这难道不管用吗?我需要它为所有可能存在的组工作。如果你有组的id,你可以做同样的事情。你只需要稍微改变一下过滤器。您可以将组的完整查询集作为参数传递,并循环应用筛选器的所有组。如果我不清楚,我可以根据您的代码编写一些可能有效的内容。是的,我不确定如何实现。有没有一种更简单的方法来检查会话用户的id是否在组中,以及他们是否在组中,然后只显示取消连接?我认为最干净的方法是过滤方法。如果我知道组的名称,这难道不管用吗?我需要它为所有可能存在的组工作。如果你有组的id,你可以做同样的事情。你只需要稍微改变一下过滤器。您可以将组的完整查询集作为参数传递,并循环应用筛选器的所有组。如果我不清楚,我可以根据您的代码编写一些可能有效的内容。是的,我不确定如何实现。有没有一种更简单的方法来检查会话用户的id是否在组中,以及他们是否在组中,然后只显示取消连接?我认为最干净的方法是过滤方法。如果我知道组的名称,这难道不管用吗?我需要它为所有可能存在的组工作。如果你有组的id,你可以做同样的事情。你只需要稍微改变一下过滤器。您可以将组的完整查询集作为参数传递,并循环应用筛选器的所有组。如果我不清楚,我可以根据您的代码编写一些可能有效的内容。是的,我不确定如何实现。有没有一种更简单的方法来检查会话用户的id是否在组中,以及他们是否在组中,然后只显示取消连接?我认为最干净的方法是过滤方法。