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.