@dawasaturday

Каким должен быть мой алгоритм действий при разработке сайта?

Пробный проект.
сайт, куда пользователи будут добавлять тексты песен.
Доступ будет осуществляться в зависимости от роли юзера: незарегестрированные (могут видеть на сайте только список песен, которые уже были кем-то туда забиты), зарегестрированные(могут добавлять свои композиции - точнее "оформлять" название песни, исполнителя, вбивать текст), модераторы(действия зарегестрированных пользователей + могут вносить правки в то, что было добавлено другим пользователем), админ (может делать всё - менять, удалять такие записи .. )
(идентификация и аутентификация, я так понимаю)
Сейчас расписала только модели. (и может даже не факт, что правильно это сделала)
Если нужен код с моделями, крикните.
Помогите, разъясните, какой должна быть теперь моя последовательность действий? вряд ли это важно, но использую pycharm на windows, сервер и бд встроенные.
  • Вопрос задан
  • 1261 просмотр
Решения вопроса 1
ubernoob
@ubernoob
1. Создаёте структуру БД
2. Создаёте БД по этой структуре в ней у пользователей делаете поле статуса - 0 обычный юзер 1 - модератор например
3. Пишете отдельно вывод статей, регистрацию пользователей, добавление текстов, тестируете
4. Дописываете функционал модерации, тестируете
5. Одеваете всё это в дизайн, хотя я сейчас дизайн, вёрстку после 2 шага делаю
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
@deliro
У джанговского юзера есть дефолтный флаг is_staff, который позволяет зайти в админку. Можешь юзать его. А ещё дефолтные права.
Ответ написан
sim3x
@sim3x
Никаких моделей
Никакой аутентификации

У тебя есть юзер стори - опиши ее в шагах и пиши код, который нужен для ее реализации
и начни с тестов chimera.labs.oreilly.com/books/1234000000754
Ответ написан
Пишешь модели
Если нужно - расширяешь модель Юзера
Пишешь вьюхи.
А теперь магия: во вьюхах где доступ должны иметь только зарегистрированные юзеры вешаешь на функции декоратор @staff_member_required или @login_required
если Вьюхи CBV - пишешь миксин
class LoginRequiredMixin(object):
    """
    A login required mixin for use with class based views. This Class is a light wrapper around the
    `login_required` decorator and hence function parameters are just attributes defined on the class.

    Due to parent class order traversal this mixin must be added as the left most
    mixin of a view.

    The mixin has exaclty the same flow as `login_required` decorator

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

У версии 1.9 уже есть этот миксин, и тогда во вьюхе его просто наследуешь. Порядок наследования важен. Справа всегда должна быть родительская вьюха с которой идет наследование, а слева другие вью и миксины.
class CreateSongView(LoginRequired , CreateView):

Можно миксинчиками порезать доступ
У шаблонах немного по-другому:
{% if user.is_authenticated %} или что-то наподобии is_admin или можно реализовать все с помощью доступов permissions:
В админке создать группы, раздать каждой по своему доступу и тогда в шаблоне и вьюхах можно будет проверять по типу has_permission('poll.add')
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы