Как ограничить доступ пользователей блога к содержимому блога с помощью оператора if в шаблонах django? - PullRequest
0 голосов
/ 06 января 2019

Ребята, я хочу создать логику для Django в шаблоне, где только подписанные пользователи могут получить доступ к сообщению в блоге. я попытался использовать только_для подписчиков логическое поле и группу user.followers, чтобы публикация была доступна только подписчикам.

class Post(models.Model):
    title = models.CharField(max_length=250)
    slug = models.SlugField(max_length=250, unique=True,default=None)
    created = models.DateField(auto_now_add = True)
    author = models.ForeignKey(User, related_name='uploaded_by')
    published = models.BooleanField(default=True)   
    only_for_subscribers = models.BooleanField(default = False)

    @login_required
    def ArticleDetailView(request,slug):
        post = get_object_or_404(Post, slug=slug)
        return render(request, 'blog/post_detail.html', {'post': post,})


class Contact(models.Model):
    user_from = models.ForeignKey(User,related_name='rel_from_set')
    user_to = models.ForeignKey(User, related_name='rel_to_set')
    created = models.DateTimeField(auto_now_add=True, db_index=True)

    class Meta:
        ordering = ('-created',)

    def __str__(self):
        return '{} follows {}'.format(self.user_from, self.user_to)



    User.add_to_class('following', models.ManyToManyField('self', through=Contact, related_name='followers', symmetrical=False))


{% if request.user not in user.followers.all and post.only_for_  
subscribers %}
Please subscribe
{% else %}
<div>
{{post.title}}
</div>
{% endif %} 

1 Ответ

0 голосов
/ 06 января 2019

Если у вас есть пользовательская модель и определенные классы разрешений для ваших групп пользователей, вы можете использовать любой из этих тегов. использование аутентификации для просмотра определенного контента {% if user.is_authenticated %} <!--There got your the html section you want the user to see only if he is authenticated --> {% else %} <!-- provide a behavior if not you can redirect to login page for instance --> {% endif %} Использование разрешений для разрешения определенных действий {% if user.is_staff %} {% if perms.your_module.your_set_permission %} предоставить ссылку на ваш взгляд {% endif %} Надеюсь, что это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...