Jak wykorzystać generyczne widoki w praktyce? Zacznijmy od widoku, który listuje obiekty

W tym celu wykorzystamy model Note, który utworzyliśmy podczas pisania pierwszej aplikacji.

Nasz aktualny model wygląda tak:

class Note(models.Model):
    title = models.CharField(max_length=256)
    body = models.TextField()

Najprostsza wersja widoku może dla niego wygladać w ten sposób -

#plik: notes/views.py
from django.views.generic import ListView

from notes.models import Note


class NoteListView(ListView):
    model = Note

Aby z niego skorzystać musimy utworzyć odpowiedni adres url w pliku notes/urls.py

from django.conf.urls import url

from notes.views import NoteListView

urlpatterns = [
    url(r'^$', NoteListView.as_view(), name='note-list'),
]

TODO: co to jest .as_view()

Nasz widok domyślnie będzie szukał szablonu odpowiedzialnego za wyświetlanie danych w pliku notes/templates/notes/note_list.html

<h1>Notes</h1>
<ul>
{% for note in object_list %}
    <li>{{ note.title }}</li>
{% empty %}
    <li>No notes yet.</li>
{% endfor %}
</ul>

TODO: Link do zasad działania tagów w template

Musimy oczywiście pamietac o podpięciu adresów z aplikacji do projektu, a więc zmieniay w pliku testing/urls.py

from django.conf.urls import url, include
from django.contrib import admin


urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^notes/', include('notes.urls')),
]

TODO: o przestrzeniach nazw

Uruchamiamy aplikację i przechodzimy na stronę http://127.0.0.1:8000/notes/

W kolejnym wpisie postaram się przytoczyć nieco skomplikowaną a co za tym idzie dającą więcej możliwości wersję widoku bazującego na generycznym ListView.

Currently unrated
  • Share