Narzędzia użytkownika

Narzędzia witryny


pl:python:views

Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

Poprzednia rewizja po obu stronachPoprzednia wersja
Nowa wersja
Poprzednia wersja
pl:python:views [2023/12/07 18:29] – [FormMixin] sindappl:python:views [2023/12/07 19:36] (aktualna) – [ProcessFormView] sindap
Linia 985: Linia 985:
  
 W tym przykładzie ''YourListView'' dziedziczy po ''ListView'' i korzysta z `MultipleObjectMixin`. ''get_queryset()'' jest używane do dostosowania zestawu danych, a lista obiektów jest przekazywana do szablonu pod nazwą ''object_list''. Paginacja jest również aktywowana, a liczba obiektów na stronę jest ustawiona na 10. W tym przykładzie ''YourListView'' dziedziczy po ''ListView'' i korzysta z `MultipleObjectMixin`. ''get_queryset()'' jest używane do dostosowania zestawu danych, a lista obiektów jest przekazywana do szablonu pod nazwą ''object_list''. Paginacja jest również aktywowana, a liczba obiektów na stronę jest ustawiona na 10.
 +
 +Można przyjąć, że klasę ''SingleObjectMixin'' najczęściej stosuje się w połączeniu z klasami widoków, które obsługują pojedyncze obiekty, takimi jak ''DetailView'', ''UpdateView'', ''DeleteView''. Natomiast klasę ''MultipleObjectMixin'' używa się z klasami, które obsługują listy obiektów, takimi jak ''ListView''.
 +
 +Przykładowo:
 +
 +1. **SingleObjectMixin:**
 +  * ''DetailView'': Wyświetla szczegóły pojedynczego obiektu.
 +  * ''UpdateView'': Aktualizuje pojedynczy obiekt.
 +  * ''DeleteView'': Usuwa pojedynczy obiekt.
 +
 +Przykład z ''DetailView'':
 +
 +<code python>
 +from django.views.generic import DetailView
 +from django.views.generic.detail import SingleObjectMixin
 +from .models import YourModel
 +
 +class YourDetailView(SingleObjectMixin, DetailView):
 +    model = YourModel
 +    template_name = 'your_template.html'
 +    context_object_name = 'object'
 +</code>
 +
 +2. **MultipleObjectMixin:**
 +  * ''ListView'': Wyświetla listę obiektów.
 +  * Inne widoki, które operują na listach obiektów takie jak:''DateListView'', ''ArchiveIndexView'', ''YearArchiveView'', ''MonthArchiveView'', ''WeekArchiveView'', ''DayArchiveView'', ''TodayArchiveView''
 +
 +Przykład z ''ListView'':
 +
 +<code python>
 +from django.views.generic import ListView
 +from django.views.generic.list import MultipleObjectMixin
 +from .models import YourModel
 +
 +class YourListView(MultipleObjectMixin, ListView):
 +    model = YourModel
 +    template_name = 'your_template.html'
 +    context_object_name = 'object_list'
 +    paginate_by = 10
 +</code>
 +
 +Stosowanie odpowiednich ''mixinów'' w zależności od rodzaju widoku pozwala na łatwą i spójną obsługę różnych scenariuszy w aplikacji Django.
 ==== MultipleObjectTemplateResponseMixin ==== ==== MultipleObjectTemplateResponseMixin ====
  
Linia 1020: Linia 1062:
 ==== ModelFormMixin ==== ==== ModelFormMixin ====
  
 +W Django, klasa ''ModelFormMixin'' jest używana w połączeniu z widokami, które obsługują formularze oparte na modelu. Ten mixin dostarcza funkcjonalności związanej z obsługą formularzy w kontekście operacji na modelu. Najczęściej stosuje się go w połączeniu z widokami takimi jak ''CreateView'' i ''UpdateView'', które są odpowiedzialne za tworzenie i aktualizację obiektów modelu.
 +
 +Oto przykład użycia ''ModelFormMixin'' w połączeniu z ''CreateView'':
 +
 +<code python>
 +from django.views.generic.edit import CreateView
 +from django.urls import reverse_lazy
 +from .models import YourModel
 +from .forms import YourModelForm  # Załóżmy, że to jest formularz oparty na modelu
 +
 +class YourCreateView(ModelFormMixin, CreateView):
 +    model = YourModel
 +    form_class = YourModelForm
 +    template_name = 'your_template.html'
 +    success_url = reverse_lazy('your-success-url')
 +
 +    def form_valid(self, form):
 +        # Dodatkowe działania po poprawnej walidacji formularza
 +        return super().form_valid(form)
 +</code>
 +
 +W powyższym przykładzie ''YourCreateView'' jest widokiem, który obsługuje tworzenie nowego obiektu modelu za pomocą formularza (''YourModelForm''). ''ModelFormMixin'' dostarcza funkcji związanych z obsługą formularza i jego zapisywaniem w kontekście operacji na modelu.
 +
 +Podobnie można użyć ''ModelFormMixin'' w połączeniu z ''UpdateView'' do aktualizacji istniejących obiektów modelu. W zależności od przypadku użycia, ''ModelFormMixin'' pomaga w obszarze zapisywania, wyświetlania formularza, walidacji i innych zadań związanych z formularzem na podstawie modelu.
 ==== ProcessFormView ==== ==== ProcessFormView ====
 +
 +W Django, klasa ''ProcessFormView'' to klasa bazowa, która dostarcza funkcjonalności związane z przetwarzaniem formularza w widokach opartych na klasie. Jest to często stosowane wewnątrz innych widoków, takich jak ''FormView'', ''CreateView'', ''UpdateView'', itp., które obsługują formularze.
 +
 +''ProcessFormView'' jest odpowiedzialna za obsługę procesu przetwarzania formularza. W kontekście innych widoków, te zadania są zazwyczaj realizowane automatycznie, a deweloperzy rzadko korzystają bezpośrednio z ''ProcessFormView''. Niemniej jednak, dla bardziej zaawansowanych przypadków użycia, deweloperzy mogą dziedziczyć bezpośrednio z tej klasy, aby dostosować zachowanie przetwarzania formularza w widoku.
 +
 +Oto przykład użycia ''ProcessFormView'':
 +
 +<code python>
 +from django.views.generic.edit import ProcessFormView
 +from django.http import HttpResponseRedirect
 +from django.urls import reverse
 +from .forms import YourForm
 +
 +class YourCustomFormView(ProcessFormView):
 +    form_class = YourForm
 +    template_name = 'your_template.html'
 +
 +    def form_valid(self, form):
 +        # Dodatkowe operacje po poprawnej walidacji formularza
 +        # Możesz dostosować to do swoich potrzeb, na przykład zapisywanie dodatkowych danych
 +        return HttpResponseRedirect(reverse('success-url'))
 +</code>
 +
 +W tym przykładzie ''YourCustomFormView'' dziedziczy z ''ProcessFormView'' i definiuje formularz (''YourForm''). Metoda ''form_valid'' jest wywoływana, gdy formularz jest poprawnie zwalidowany. Deweloper może dostosować tę metodę, aby wykonać dodatkowe operacje po poprawnej walidacji formularza.
 +
 +W praktyce, jednak najczęściej korzystasz z bardziej specjalizowanych klas widoków, które korzystają z ''ProcessFormView'' wewnętrznie, takich jak ''FormView'', ''CreateView'', ''UpdateView'', itp.
  
 ==== DeletionMixin ==== ==== DeletionMixin ====
pl/python/views.1701970191.txt.gz · ostatnio zmienione: 2023/12/07 18:29 przez sindap

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki