django 일반 보기 만들기
3212 단어 django
우리 코드의 공통점을 추출하는 것은 매우 좋은 프로그래밍 습관이다.예를 들어, 다음 두 개의 Python 함수와 같습니다.
def say_hello(person_name):
print 'Hello, %s' % person_name
def say_goodbye(person_name):
print 'Goodbye, %s' % person_name
우리는 인사말을 추출하여 하나의 매개 변수로 만들 수 있다.
def greet(person_name, greeting):
print '%s, %s' % (greeting, person_name)
추가 URLconf 매개 변수를 사용하면 같은 생각을 Django의 보기에 적용할 수 있습니다.
이것을 이해한 후에 너는 고추상적인 시도를 창작하기 시작할 수 있다.더욱 구체적으로 말하자면, 예를 들어 이 보기는 일련의 이벤트 대상을 나타내고, 그 보기는 일련의 BlogEntry 대상을 나타내며, 그것들은 모두 일련의 대상을 나타내는 보기의 특례이며, 대상의 유형은 사실 하나의 변수임을 의식한다.
이 코드를 예로 들면 다음과 같습니다.
# urls.py
from django.conf.urls.defaults import *
from mysite import views
urlpatterns = patterns('',
(r'^events/$', views.event_list),
(r'^blog/entries/$', views.entry_list),
)
# views.py
from django.shortcuts import render_to_response
from mysite.models import Event, BlogEntry
def event_list(request):
obj_list = Event.objects.all()
return render_to_response('mysite/event_list.html', {'event_list': obj_list})
def entry_list(request):
obj_list = BlogEntry.objects.all()
return render_to_response('mysite/blogentry_list.html', {'entry_list': obj_list})
이 두 보기가 하는 일은 실질적으로 같다. 일련의 대상을 보여주는 것이다.표시되는 객체의 유형을 추상화합니다.
# urls.py
from django.conf.urls.defaults import *
from mysite import models, views
urlpatterns = patterns('',
(r'^events/$', views.object_list, {'model': models.Event}),
(r'^blog/entries/$', views.object_list, {'model': models.BlogEntry}),
)
# views.py
from django.shortcuts import render_to_response
def object_list(request, model):
obj_list = model.objects.all()
template_name = 'mysite/%s_list.html' % model.__name__.lower()
return render_to_response(template_name, {'object_list': obj_list})
이렇게 작은 변동으로 우리는 갑자기 우리가 다시 사용할 수 있는, 모델과 무관한 보기가 있다는 것을 발견했다!지금부터 일련의 대상을 보여주기 위한 보기가 필요할 때, 우리는 간단명료하게 이objectlist 보기, 보기 코드를 따로 쓸 필요가 없습니다.다음은 우리가 한 일이다.
우리는 모델 매개 변수를 통해 모델 종류를 직접 전달했다.추가 URLconf 매개변수의 사전은 문자열뿐만 아니라 모든 유형의 객체를 전달할 수 있습니다.
이 줄:모델.objects.all ()는 오리가 정한 것이다.
6
모델. 사용name__.lower () 로 템플릿의 이름을 결정합니다.Python의 클래스마다name__ 속성이 클래스 이름을 되돌려줍니다.이 특성은 우리가 실행할 때가 되어서야 대상 유형을 알 수 있는 상황에서 매우 유용하다.예를 들어, BlogEntry 클래스의name__ 바로 문자열'BlogEntry'입니다.
이 예는 앞의 예와 약간 다르다. 우리는 템플릿에 통용되는 변수 이름을 전달했다.물론 저희가 쉽게 이 변수명을blogentry 로 바꿀 수 있어요.list 또는 이벤트list, 하지만 우리는 이것을 연습으로 삼아 독자에게 남겨 두려고 합니다.
3
데이터베이스로 구동되는 사이트는 모두 통용되는 모델이 있기 때문에 Django는 통용적인 보기의 집합을 제공합니다. 이 집합을 사용하면 당신의 시간을 절약할 수 있습니다.우리는 다음 장에서 Django의 내장된 유니버설 보기에 대해 이야기할 것이다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Django의 질문 및 답변 웹사이트환영 친구, 이것은 우리의 새로운 블로그입니다. 이 블로그에서는 , 과 같은 Question-n-Answer 웹사이트를 만들고 있습니다. 이 웹사이트는 회원가입 및 로그인이 가능합니다. 로그인 후 사용자는 사용자의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.