Django Book 2.0 노트-View
글의 모든 상호작용 부분은python 관리자입니다.py 셸에서 실행된,
MTV 모드:
데이터 구동의 웹 응용을 데이터 액세스 논리, 표현 논리와 업무 논리에 따라 구조를 구분하는 개념은 모델-View-Controller 모델(MVC)이라고 부른다.이런 모델이 Django에 나타난 것은 바로 MTV 모델이다. 데이터베이스 업무를 담당하는 모델, 페이지 표현을 담당하는 Template와 조직 업무를 담당하는 View이다.
Project & App
프로젝트는 전체 사이트를 만들고 실행하는 데 사용되는 모든 파일을 포함하는 폴더로 볼 수 있고 app는 프로젝트의 다음 디렉터리에 있는 여러 개의 하위 폴더로 각 app는 독립된 기능을 포함하고 apps의 전체가 전체 사이트를 구성한다.뭐, 대개'대상'과'방법'의 관계라고 볼 수 있겠죠.
프로젝트를 만들 때 명령줄을 사용할 수 있습니다:django-admin.py startproject site_name
django-admin.py는 Python 설치 디렉토리의 Sripts 폴더에 있습니다.이 명령은 실행 디렉터리에 프로젝트 관리 파일 관리자를 포함하는 폴더를 생성합니다.py와 "site name"과 이름이 같은 하위 폴더init__.py , settings.py , urls.py , wsgi.py 네 개의 프로젝트 설정 파일입니다.
관리자를 사용합니다.py가 app를 만든 후 appname 폴더에 처음 다섯 개의 파일이 포함됩니다.inti__.py의 기능은 위와 같습니다. 기타는 다음과 같습니다.
View
보기 함수는 프로젝트 폴더와 apps 폴더의views 파일에 포함됩니다.모든 함수는 같은 업무를 처리하고 해당하는 페이지로 되돌아갈 수 있다.
URLConfs:
'어떤 url 주소가 어떤 함수를 호출하는지' 는 프로젝트 폴더에 있는 urls 파일에 설정됩니다.urls의urlpatterns 변수는 만들 때 두 가지 주석된 예시를 가지고 patterns 대상의 표준 문법을 알립니다.
urlpatterns
=
patterns(
''
,
#
Examples:
#
url(r'^$', 'mysite.views.home', name='home'),
#
url(r'^blog/', include('blog.urls')),
)
공통 뷰 접두어
patterns 대상의 첫 번째 매개 변수는 빈 문자열입니다. 이것은 사실 공공 보기 접두사입니다. 뒤에 있는 모든 문자열 함수 경로의 앞에 추가됩니다.
또한 여러 개의 서로 다른 보기 접두사가 존재하는 상황에 대응하기 위해 예를 들어 모든 앱에 하나의 공공 보기 접두사를 사용하기 위해urlpatterns 대상은 스스로 추가할 수 있다(+=):
urlpatterns
=
patterns(
'
app1.views
'
, url(r
'
^app1_url$
'
,
'
func_in_app1
'
) ) urlpatterns
+=
patterns(
'
app2.views
'
, url(r
'
^app2_url$
'
,
'
func_in_app2
'
) )
url 매개 변수
url 매개 변수는 urlpattern이 정규 표현식의 형식으로 포획하여 보기 함수로 자동으로 전송할 수 있습니다.하위 그룹과 유사하게 캡처합니다().
urlpatterns
=
patterns(
''
, (r
'
^(\d{1,2})/$
'
,
'
app.views.func
'
), )
여기 (\d{1,2}) 는 한두 자리의 숫자와 일치하고 보기 함수에 문자열로 전송되며, 이런 매개 변수는 항상 문자열로 전송됩니다.
또한 보기 함수에서도 매개 변수 유형 검사를 잘 해야 하며 항상 호출자가 신뢰할 수 없다고 여겨야 한다.
url 명명 정규 표현식
위치 매개변수를 캡처하는 방법() 외에도 키워드 매개변수 name=pattern(?P
urlpatterns
=
patterns(
''
, url(r
'
^articles/(?P<year>\d{4})/$
'
, views.year_archive), url(r
'
^articles/(?P<year>\d{4})/(?P<month>\d{2})/$
'
, views.month_archive), )
추가 매개 변수
앞에 쓰여 있지 않지만 url 구조기에는 선택할 수 있는 세 번째 인자인 사전 봉인된 키워드 파라미터가 있습니다.
urlpatterns
=
patterns(
''
, url(r
'
^foo/$
'
, views.foobar_view, {
'
template_name
'
:
'
template1.html
'
}), url(r
'
^bar/$
'
, views.foobar_view, {
'
template_name
'
:
'
template2.html
'
}), )
#
views
def
foobar_view(request, template_name): m_list
=
MyModel.objects.filter(is_new
=
True)
return
render_to_response(template_name, {
'
m_list
'
: m_list})
추가 매개 변수의 일반 응용 장면
1. 포착된 URLconf 값 위조
만약 어떤 보기 함수가 url 매개 변수를 정의했고, 완전한 매개 변수를 제공할 수 없는 url 아래에서 이 보기를 사용하고 싶다면, 추가 매개 변수를 사용하여 그것을 보완할 수 있다.
2. 일반 뷰 작성
계속...
3. 우선순위 문제
포착된 이름 그룹 변수와 추가 파라미터가 충돌할 때 추가 파라미터가 우선입니다
특수 뷰
어떤 일치 모드가 특수하고 다른 보기 함수를 호출해야 할 때, 이 특수 모드를 URLconf의 첫 번째 위치에 추가하는 방식으로 실현할 수 있습니다. 왜냐하면 Django가urlpatterns에 대한 해석이 순서이기 때문입니다.
추가 URLconf(include) 포함
위에서 언급한 urls 파일에 있는 두 개의 주석을 가진 예시 중include의 예가 있다.
urlpatterns
=
patterns(
''
,
#
Examples:
#
url(r'^$', 'mysite.views.home', name='home'),
#
url(r'^blog/', include('blog.urls')),
)
그의 특별한 점을 볼 수 있다. 우선 url 표현식의 끝은 $가 아니라/이다.그 다음에 보기 함수의include로 바뀌었습니다.
이include의 역할은 다른 urls 파일을 도입하는 것입니다.또는 더 정확히 말하면, 그는 이미 일치하는 부분을 차단한 다음, 나머지 url 표현식을include가 가리키는 urls 파일에 전송해서 일치하게 할 것이다.이 기능은 공공 보기 접두사와 유사하지만, 실현하는 방식이 다르기 때문에include는 여러 위치에서 서로 다른 urls 파일을 설정해야 하는 경우나, 설정된 urls 파일을 직접 사용해야 하는 경우(예를 들어admin 페이지)에 더욱 적합하다.
주의:include를 사용할 때 부모 URLconf에서 파라미터를 포획하면 이 파라미터는 하위 URLconf에 전송되며 하위 URLconf는 이에 대해 정확한 응답을 해야 합니다. 그렇지 않으면 파라미터 이상을 일으킬 수 있습니다.이 점은 추가 매개 변수에도 마찬가지다.
보기 함수:
보기 함수의 작업은 간단하게 말하면 HttpRequest 대상을 분석한 다음 HttpResponse 대상을 되돌려주는 것입니다.가장 간단한 보기 함수 (아무것도 하지 않음) 가 이렇게 보입니다.
def
foo(request):
return
HttpResponse(
""
)
request 대상은 항상 첫 번째 매개 변수로 전송됩니다.
장식기 사용:
대량의 보기 함수에 일부 기능이 독립된 공공 코드가 있을 때, 이 코드를 장식기 함수로 작성하고 보기 함수를 정의할 때 사용할 수 있다.예를 들어 다음 로그인 인증의 예:
def
requires_login(view):
def
new_view(request,
*
args,
**
kwargs):
if
not
request.user.is_authenticated():
return
HttpResponseRedirect(
'
/accounts/login/
'
)
return
view(request,
*
args,
**
kwargs)
return
new_view
HttpRequest
request 대상에 포함된 현재 요청 URL에 대한 정보:
request.META는 HTTP에서 요청한 헤더 정보를 포함하는 파이썬 사전입니다.안에서 흔히 볼 수 있는 키는 다음과 같다.
request에는 GET와 POST 속성도 있습니다. 그들은 모두 클래스 사전의 대상입니다. get (), keys (),values () 방법이 있습니다.
Forms 라이브러리
Form 클래스를 사용하는 일반적인 방법은 app 경로에forms를 새로 만드는 것입니다.py, 템플릿의 모든
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Django의 질문 및 답변 웹사이트환영 친구, 이것은 우리의 새로운 블로그입니다. 이 블로그에서는 , 과 같은 Question-n-Answer 웹사이트를 만들고 있습니다. 이 웹사이트는 회원가입 및 로그인이 가능합니다. 로그인 후 사용자는 사용자의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.