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)

Не уверен, как бы я изменил этот код, чтобы он соответствовал тому, что я пытаюсь сделать. Я почти уверен, что «модель», «имя_шаблона» и «возврат» должны соответствовать чему-то, связанному с циннией, но я действительно в тупике.


person PsiloLR    schedule 25.02.2015    source источник


Ответы (1)


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

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

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

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

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

форма входа на главную страницу Django

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

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

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

person Efrin    schedule 25.02.2015
comment
Спасибо вам большое за это. Я знаю, мне нужно больше практики. Я очень горжусь тем, как далеко я продвинулся за последние две недели, и я обязан всем этим просто делать уроки, доступные онлайн. По какой-то причине я просто не смог найти нужную документацию или что-то в этом роде, и, конечно же, кривая изучения документации имеет тенденцию быть немного крутой. Вопрос новичка: несмотря на то, что это промежуточное ПО, требующее входа в систему, было опубликовано в 2008 году, как вы думаете, оно будет конфликтовать с моей установкой 1.7 django? Я буду возиться с этими учебниками и вернусь с результатами. - person PsiloLR; 25.02.2015
comment
Я внес некоторые изменения в свой основной вопрос, см. правки :) Я добился прогресса, но столкнулся с небольшой загвоздкой. - person PsiloLR; 26.02.2015
comment
Вам действительно не нужны эти представления, потому что zinnia имеет свои собственные представления для отображения списка записей и сведений о записи. Для начала вы должны использовать представления на основе функций (представления на основе классов довольно сложны для изучения в начале). - person Efrin; 02.03.2015
comment
Я нашел приложение под названием django-stronghold, которое дает мне именно то, что мне нужно, и дает большой контроль над тем, какие страницы доступны или недоступны для просмотра анонимным пользователям. Он автоматически добавляет миксин на все страницы без входа и т. д. - person PsiloLR; 03.03.2015