English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
폼
뷰 코드를 작성하는 경우, 우리가 보았듯이 매우 복잡할 수 있습니다. 단순한 정적 페이지나 목록 페이지만 필요하다면 생각해 보세요. Django는 이러한 간단한 뷰를 설정하는 데 사용할 수 있는 간단한 방법을 제공합니다.
일반적인 뷰는 전통적인 뷰와 달리, 함수가 없는 클래스입니다. Django는 또한 django.views.generic 제네릭 뷰를 제공하며, 각 일반 뷰는 이러한 클래스 중 하나에서 또는 그 중 하나를 상속한 클래스입니다.10+제네릭 클래스−
# Filename : example.py # Copyright : 2020 By w3codebox # Author by : ko.oldtoolbag.com # Date : 2020-08-08 >>> django.views.generic를 가져옵니다 >>> dir(django.views.generic) ['ArchiveIndexView', 'CreateView', 'DateDetailView', 'DayArchiveView', 'DeleteView', 'DetailView', 'FormView', 'GenericViewError', 'ListView', 'MonthArchiveView', 'RedirectView', 'TemplateView', 'TodayArchiveView', 'UpdateView', 'View', 'WeekArchiveView', 'YearArchiveView', '__builtins__', '__doc__', '__file__', '__name__', '__package__', '__path__', 'base', 'dates', 'detail', 'edit', 'list'
제네릭 뷰를 사용할 수 있습니다. 그 작동 방식을 보여드리기 위해 몇 가지 예제를 보겠습니다
static.html 템플릿을 사용하여 정적 페이지를 배포해 보겠습니다
우리의 static.html −
# Filename : example.py # Copyright : 2020 By w3codebox # Author by : ko.oldtoolbag.com # Date : 2020-08-08 <html> <body> 이것은 정적 페이지!!! </body> </html>
이렇게 하면, 이전에 배운 방식으로, myapp을 변경해야 합니다/views.py −
# Filename : example.py # Copyright : 2020 By w3codebox # Author by : ko.oldtoolbag.com # Date : 2020-08-08 django.shortcuts에서 render를 가져옵니다 def static(request): return render(request, 'static.html', {})
myapp/urls.py는 다음과 같습니다 -
# Filename : example.py # Copyright : 2020 By w3codebox # Author by : ko.oldtoolbag.com # Date : 2020-08-08 from django.conf.urls import patterns, url urlpatterns = patterns("myapp.views", url(r'^static/', 'static', name = 'static'),)
최선의 방법은 패널 뷰를 사용하는 것입니다. 이 점에서, 우리의 myapp/views.py는 다음과 같이 됩니다 -
# Filename : example.py # Copyright : 2020 By w3codebox # Author by : ko.oldtoolbag.com # Date : 2020-08-08 from django.views.generic import TemplateView class StaticView(TemplateView): template_name = "static.html"
우리의 myapp/urls.py는 다음과 같습니다 -
# Filename : example.py # Copyright : 2020 By w3codebox # Author by : ko.oldtoolbag.com # Date : 2020-08-08 from myapp.views import StaticView from django.conf.urls import patterns urlpatterns = patterns("myapp.views", url(r'^static/, StaticView.as_view()),) , StaticView.as_view()),)
접근할 때 /myapp/static은 다음과 같이 됩니다 -
같은 결과를 얻기 위해 다음과 같은 작업을 수행할 수 있습니다 -
views.py 파일을 수정할 필요가 없습니다 url.py 파일을 변경합니다 -
# Filename : example.py # Copyright : 2020 By w3codebox # Author by : ko.oldtoolbag.com # Date : 2020-08-08 from django.views.generic import TemplateView from django.conf.urls import patterns, url urlpatterns = patterns("myapp.views", url(r'^static/', TemplateView.as_view(template_name = 'static.html')),)
너무나도 명확하게 보이듯이, url.py 파일의 두 번째 메서드만 변경하면 됩니다.
Dreamreal 모델의 모든 항목을 나열하고 싶습니다. 이렇게.ListView 패널 뷰 클래스를 사용하는 것이 쉬워집니다. url.py 파일을 편집하고 업데이트하세요 -
# Filename : example.py # Copyright : 2020 By w3codebox # Author by : ko.oldtoolbag.com # Date : 2020-08-08 from django.views.generic import ListView from django.conf.urls import patterns, url urlpatterns = patterns( "myapp.views", url(r'^dreamreals/', ListView.as_view(model = Dreamreal, template_name = "dreamreal_list.html")),
이 점에서는 변수가 패널 뷰에서 객체 목록으로 전환된다는 점을 주의해야 합니다. 자신의 이름을 사용하고 싶다면 as_view 메서드에 context_object_name 파라미터를 추가해야 합니다. 그런 다음 url.py가 됩니다. -
# Filename : example.py # Copyright : 2020 By w3codebox # Author by : ko.oldtoolbag.com # Date : 2020-08-08 from django.views.generic import ListView from django.conf.urls import patterns, url urlpatterns = patterns("myapp.views", url(r'^dreamreals/', ListView.as_view( template_name = "dreamreal_list.html")), model = Dreamreal, context_object_name = "dreamreals_objects",)
그런 다음 연결된 템플릿이 됩니다 −
# Filename : example.py # Copyright : 2020 By w3codebox # Author by : ko.oldtoolbag.com # Date : 2020-08-08 {% extends "main_template.html" %} {% block content %} Dreamreals:<p> {% for dr in object_list %} {{dr.name}}</p> {% endfor %} {% endblock %}
접근 /myapp/dreamreals/ 다음과 같은 페이지가 생성됩니다 −