v štvrtej časti tutoriálu Django, použil django.views.generic.ListView
, ale v Zobrazenie rozhrania rozhrania API pre zobrazenia založené na triede, ListView
je v django.views.generic.list.ListView
, Aký je rozdiel medzi django.views.generic.list.ListView
a django.views.generic.ListView
?
odpovede:
1 pre odpoveď č. 1Obaja sú presne odkazujú na rovnakú triedu. Môžete to skontrolovať
import inspect
from django.views.generic import ListView
print(inspect.getfile(ListView))
from django.views.generic.list import ListView
print(inspect.getfile(ListView))
1 pre odpoveď č. 2
Na ListView
Trieda skutočne žije django/views/generic/list.py
. Ale to je zdrojový kód django/views/generic/__init__.py
:
from django.views.generic.base import RedirectView, TemplateView, View
from django.views.generic.dates import (
ArchiveIndexView, DateDetailView, DayArchiveView, MonthArchiveView,
TodayArchiveView, WeekArchiveView, YearArchiveView,
)
from django.views.generic.detail import DetailView
from django.views.generic.edit import (
CreateView, DeleteView, FormView, UpdateView,
)
from django.views.generic.list import ListView
__all__ = [
"View", "TemplateView", "RedirectView", "ArchiveIndexView",
"YearArchiveView", "MonthArchiveView", "WeekArchiveView", "DayArchiveView",
"TodayArchiveView", "DateDetailView", "DetailView", "FormView",
"CreateView", "UpdateView", "DeleteView", "ListView", "GenericViewError",
]
class GenericViewError(Exception):
"""A problem in a generic view."""
pass
Ako vidíte, všetky generické názory dováža z ich príslušných modulov.Je to len pohodlie, ktoré vám umožňuje importovať všetky triedy od django.views.generic
bez odkazovanie jednotlivých modulov.