Django 1.7 & Zinnia (стабильная версия) - как сделать свой блог приватным и доступным только для приглашенных?

Я исследовал это в течение пары дней и нашел множество возможных решений, однако большинству учебников или страниц документации больше года (кроме официальных материалов django), и они предназначены для более старой версии django... или они просто не объясняйте вещи очень четко. Я относительно новичок в Django, а также в Python, поэтому мне нужно немного больше объяснений, которые, похоже, дает большинство статей.

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

В настоящее время я использую Zinnia как простое приложение для блога и настраиваю шаблон по умолчанию в соответствии со своими потребностями.

Кто-нибудь знает, как я мог бы реализовать эти функции?

РЕДАКТИРОВАТЬ: я прохожу учебник "Обработка аутентификации и авторизации", как предложено, и, кажется, все идет хорошо, пока я не должен создавать представления на основе классов. Поскольку учебное пособие работает с каким-то примером приложения типа "список контактов", а я управляю блогом Zinnia, мне было интересно, не могли бы вы помочь мне определить подходящие классы / модели для использования. Мой файл views.py в настоящее время выглядит следующим образом, что, вероятно, неверно:

#                           blog/views.py

from django.contrib.auth.decorators import login_required
from django.utils.decorators import method_decorator

class LoggedInMixin(object):

    @method_decorator(login_required)
    def dispatch(self, *args, **kwargs):
        return super(LoggedInMixin, self).dispatch(*args, **kwargs)

class ListBlogView(LoggedInMixin, ListView):

    model = Entry
    template_name = 'base.html'

    def get_queryset(self):

        return Entry.objects.filter(owner=self.request.user)

Не уверен, как бы я изменил этот код, чтобы соответствовать тому, что я пытаюсь сделать. Я почти уверен, что 'model', 'template_name' и 'return' должны соответствовать чему-то, что связано с Циннией, но я действительно озадачен здесь.

1 ответ

Решение

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

https://djangosnippets.org/snippets/1179/

Редактировать:

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

Как правильно использовать встроенный вид входа в django

Главная страница Форма входа Django

http://effectivedjango.com/tutorial/authzn.html

http://dustindavis.me/django-login-form-on-every-page/

Чтобы закончить их, потребуется некоторое время, но вы должны потренироваться, чтобы получить больше уверенности в Python и Django.

Другие вопросы по тегам