Django braces CsrfExemptMixin

Все эти миксины, за одним исключением, изменяют способ обработки форм в представлениях. Это UserKwargModelFormMixin миксин для использования в формах для автоматического user всплытия kwarg.

CsrfExemptMixin 
Если у вас включено промежуточное ПО для защиты CSRF от Django, вы можете освободить представления с помощью декоратора csrf_exempt . Этот миксин освобождает запросы POST от промежуточного программного обеспечения защиты CSRF, не требуя, чтобы вы декорировали dispatch метод.

Заметка
Этот миксин всегда должен быть самым левым плагином.
from django.views.generic import UpdateView

from braces.views import LoginRequiredMixin, CsrfExemptMixin

from profiles.models import Profile


class UpdateProfileView(CsrfExemptMixin, LoginRequiredMixin, UpdateView):
    model = Profile

 

UserFormKwargsMixin 
Распространенный шаблон в Django - иметь формы, настроенные для пользователя. Чтобы настроить форму для пользователей, необходимо передать этот пользовательский экземпляр в форму и, в зависимости от уровня разрешений или других деталей, изменить определенные поля или добавить определенные параметры в __init__ методе форм .

Этот миксин автоматизирует процесс перегрузки get_form_kwargs(этот метод доступен в любом универсальном представлении, которое обрабатывает форму) и вставляет пользовательский экземпляр в форму kwargs. Затем пользователь может быть pop()отключен в форме. Всегда не забывайте извлекать пользователя из kwargs перед вызовом super()в вашей форме, в противном случае форма получит неожиданный аргумент ключевого слова.

Использование 

from django.views.generic import CreateView

from braces.views import LoginRequiredMixin, UserFormKwargsMixin
from next.example import UserForm


class SomeSecretView(LoginRequiredMixin, UserFormKwargsMixin, CreateView):
    form_class = UserForm
    model = User
    template_name = "path/to/template.html"

Очевидно, это очень хорошо сочетается со следующим миксином.

UserKwargModelFormMixin 
Это UserKwargModelFormMixin миксин форм, который можно использовать вместе с нашей UserFormKwargsMixin . Это становится первым унаследованным классом наших форм, которые получают user ключевое слово аргумент. С этим миксином, pop() пинг user является автоматизированным и больше не нужно делать вручную на каждой форме, которая нуждается в таком поведении.

Использование 

from braces.forms import UserKwargModelFormMixin


class UserForm(UserKwargModelFormMixin, forms.ModelForm):
    class Meta:
        model = User

    def __init__(self, *args, **kwargs):
        super(UserForm, self).__init__(*args, **kwargs)

        if not self.user.is_superuser:
            del self.fields["group"]

SuccessURLRedirectListMixin 
Это SuccessURLRedirectListMixin немного более приспособлено к тому, как CRUD часто обрабатывается в CMS. Многие CMS по своей конструкции перенаправляют пользователя к ListView любой модели, с которой они работают, независимо от того, создают ли они новый экземпляр, редактируют существующий или удаляют его. Вместо того, чтобы переопределять get_success_url каждое представление, используйте этот миксин и передайте ему обратимое имя маршрута. Пример:

# urls.py
url(r"^users/$", UserListView.as_view(), name="users_list"),

# views.py
from django.views import CreateView

from braces import views


class UserCreateView(views.LoginRequiredMixin, views.PermissionRequiredMixin,
    views.SuccessURLRedirectListMixin, CreateView):

    form_class = UserForm
    model = User
    permission_required = "auth.add_user"
    success_list_url = "users_list"
    ...

FormValidMessageMixin 
Новое в версии 1.2.

FormValidMessageMixin Позволяет в статический или программно задать сообщение , которое будет возвращено с помощью Джанго сообщений рамки , когда форма является действительной. Возвращаемое сообщение контролируется form_valid_message свойством, которое может быть установлено в представлении или возвращено get_form_valid_message методом. Сообщение не обрабатывается до конца form_valid метода.

Предупреждение
Этот миксин требует, чтобы приложение сообщений Django было включено.
Заметка
Этот Mixin предназначен для использования с видом Джанго класса на основе стандартной формы, например FormView, CreateView,UpdateView

Статический пример 

from django.utils.translation import ugettext_lazy as _
from django.views.generic import CreateView

from braces.views import FormValidMessageMixin


class BlogPostCreateView(FormValidMessageMixin, CreateView):
    form_class = PostForm
    model = Post
    form_valid_message = _(u"Blog post created!")

Динамический пример 

from django.views.generic import CreateView

from braces.views import FormValidMessageMixin


class BlogPostCreateView(FormValidMessageMixin, CreateView):
    form_class = PostForm
    model = Post

    def get_form_valid_message(self):
        return u"{0} created!".format(self.object.title)

FormInvalidMessageMixin 
Новое в версии 1.2.

FormInvalidMessageMixin Позволяет в статический или программно задать сообщение , которое будет возвращено с помощью Джанго сообщений рамки , когда форма является недействительной. Возвращаемое сообщение контролируется form_invalid_message свойством, которое может быть установлено в представлении или возвращено get_form_invalid_message методом. Сообщение не обрабатывается до конца form_invalid метода.

Предупреждение
Этот миксин требует, чтобы приложение сообщений Django было включено.
Заметка
Этот Mixin предназначен для использования с видом Джанго класса на основе стандартной формы, например FormView, CreateView,UpdateView

Статический пример 

from django.utils.translation import ugettext_lazy
from django.views.generic import CreateView

from braces.views import FormInvalidMessageMixin


class BlogPostCreateView(FormInvalidMessageMixin, CreateView):
    form_class = PostForm
    model = Post
    form_invalid_message = _(u"Oh snap, something went wrong!")

Динамический пример

from django.utils.translation import ugettext_lazy as _
from django.views.generic import CreateView

from braces.views import FormInvalidMessageMixin


class BlogPostCreateView(FormInvalidMessageMixin, CreateView):
    form_class = PostForm
    model = Post

    def get_form_invalid_message(self):
        return _(u"Some custom message")

FormMessagesMixin 
Новое в версии 1.2.

FormMessagesMixin это удобное сочетание, которое объединяет FormValidMessageMixin и FormInvalidMessageMixin, поскольку мы обычно предоставляем сообщения для обоих состояний ( form_valid, form_invalid).

Предупреждение
Этот миксин требует, чтобы приложение сообщений Django было включено.

Статический и динамический пример 

from django.utils.translation import ugettext_lazy as _
from django.views.generic import CreateView

from braces.views import FormMessagesMixin


class BlogPostCreateView(FormMessagesMixin, CreateView):
    form_class = PostForm
    form_invalid_message = _(u"Something went wrong, post was not saved")
    model = Post

    def get_form_valid_message(self):
        return u"{0} created!".format(self.object.title)

 

6 марта 2019 г. 14:18 Теги - # django-braces’s Категория - django-braces’s Kiwi standing on oval578