【发布时间】:2021-01-21 07:31:22
【问题描述】:
如果您是成员列表的一部分,如何才能使您只能查看成员列表。 我什至不知道 MemberListView 中的“所需权限”是什么,因为这部分是由我的专家朋友完成的,所以我将其注释掉。 (希望有人也可以分享这是什么,编写基于类的视图超级新手)
基本上,对于我当前的代码,我尝试使它,如果当前登录的用户不属于列表,他们将被重定向。
models.py
class BlogPost(models.Model):
chief_title = models.CharField(max_length=50, null=False, blank=False, unique=True)
body = models.TextField(max_length=5000, null=False, blank=False)
members = models.ManyToManyField(settings.AUTH_USER_MODEL, blank=True, related_name="members")
author = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
class Account(AbstractBaseUser):
email = models.EmailField(verbose_name="email", max_length=60, unique=True)
username = models.CharField(max_length=30, unique=True)
views.py
class MemberListView(LoginRequiredMixin,BlogPostMixin, DetailView):
login_url = 'must_authenticate'
template_name = "HomeFeed/membersof_yourpost.html"
#permission_required = ('blogpost.view_all_blogpost_members')
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
if self.request.user in object.members.all:
return render('HomeFeed/membersof_yourpost.html', context)
else:
return render('HomeFeed/snippets/home.html', context)
模板:
<ul>
{% for member in object.members.all %}
<li>{{member.username}}</li>
{% endfor %}
</ul>
基于 Niespodd 的回答:
class MemberListView(LoginRequiredMixin,BlogPostMixin, DetailView):
def dispatch(self, request, *args, **kwargs):
if self.request.user in self.get_object().members.all:
return redirect('HomeFeed:member_list')
基于 JPG 答案:
class MemberListView(LoginRequiredMixin, UserPassesTestMixin, BlogPostMixin, DetailView):
login_url = 'must_authenticate'
template_name = "HomeFeed/membersof_yourpost.html"
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
if self.request.user in object.members.all:
return render('HomeFeed/membersof_yourpost.html', context)
else:
return render('HomeFeed/snippets/home.html', context)
def test_func(self):
post = self.get_object()
return self.request.user in post.members.objects.all()
【问题讨论】:
-
两者都不一样
-
如何创建
BlogPost?
标签: django django-models django-views django-forms django-templates