Django의 Views

7235 단어 Django
꽁고의 디테일.
URL conf에 URL과view를 추가하려면 URL 모드와view 기능을 매핑하는 Python tuple을 추가하면 됩니다.뷰에hello 기능을 추가하는 방법을 보여 줍니다.
from django.conf.urls.defaults import *
from mysite.views import hello

urlpatterns = patterns('',
    ('^hello/$', hello),
)

1
우선, 우리는 모듈 (Python의 import 문법에서 mysite/views.py에서 mysite.views로 번역) 에서hello 보기를 도입했다.(이것은 mysite/views.py가 Python 검색 경로에 있다고 가정합니다. 검색 경로에 대한 설명은 다음 문장을 참조하십시오.
5

다음에, 우리는urlpatterns에 줄을 추가합니다. ('^hello/$', hello) 이 줄은 URLpattern이라고 불리며, 이것은 Python의 원조입니다.원조의 첫 번째 요소는 패턴 일치 문자열 (정규 표현식) 이다.두 번째 요소는 그 모드에서 사용할 보기 함수입니다
URLpattern의 문법을 음미해 보세요.
Django는 URL 모드를 확인하기 전에 신청한 각 URL의 시작 부분에 있는 슬래시(/)를 제거합니다.즉, URL 쓰기 모드에는 슬래시(/)가 포함되지 않습니다.(처음에는 이렇게 하면 직관적이지 않을 수도 있지만 이러한 요구는 URL 모드에 삽입된 것과 같이 많은 작업을 간소화할 수 있다. 우리는 8장에서 언급할 것이다.)
모드에는 첨호 (^) 와 달러 기호 ($) 가 포함되어 있습니다.이것들은 모두 정규 표현식 기호이고 특정한 의미가 있다. 위 화살표는 표현식이 문자열의 머리에 일치하도록 요구하고 달러 기호는 표현식이 문자열의 끝에 일치하도록 요구한다.
2
가장 좋은 것은 범례로 이 개념을 설명하는 것이다.만약 우리가 끝에 $모드가 아닌 '^hello/' 를 사용한다면,/Hello/로 시작하는 URL은/Hello/foo와/Hello/bar와 일치할 것입니다. 예를 들어/Hello/뿐만 아니라.예를 들어, 첨호 (^), 즉 'hello/$' 를 무시하면, hello/로 끝나는 URL은 다음과 같습니다. 예를 들어:/foo/bar/hello/입니다.만약 우리가 간단하게 Hello/, 즉 ^ 시작과 $끝이 없다면, Hello/를 포함하는 URL은 다음과 같습니다. 예를 들어/foo/hello/bar.따라서 우리는 이 두 기호를 사용하여/hello/만 일치하고 많지도 적지도 않다는 것을 확보한다.
6
대부분의 URL 모드는 ^로 시작하고 $로 끝나지만, 복잡하게 일치하는 유연성을 가지는 것이 좋습니다.
만약 누군가가/Hello (꼬리에 빗장이 없음/) 방문을 신청한다면 어떻게 될지 물어볼 수 있습니다.우리의 URL 모드는 끝부분에 슬래시(/)가 있어야 하기 때문에 그 신청 URL은 일치하지 않습니다.그러나 기본적으로 일치하지 않거나 꼬리에 빗장(/)이 없는 신청 URL은 꼬리에 빗장이 같은 글자를 포함하는 URL로 다시 지정됩니다.(구성 파일 setting의 APPEND SLASH 항목에 의해 제어됨)
7
만약 모든 URL이 '/' 로 끝나는 것을 좋아하는 사람 (Django 개발자의 선호) 이라면, 모든 URL 뒤에 빗장을 추가하고 'APPEND' 를 설정하기만 하면 된다.SLASH는 "True"입니다."URL이 슬래시로 끝나거나 각 URL에 따라 결정되는 것이 싫으면""APPEND"SLASH는 "False"이며 URL 모드 뒤에 엔딩 슬래시/를 추가하십시오.
정규 표현식
정규 표현식 (또는regexes) 은 일반적인 텍스트 패턴이 일치하는 방법입니다.Django URLconfs는 강력한 URL 맵을 만들기 위해 임의의 정규 표현식을 사용할 수 있지만, 보통 아주 적은 기능만 사용할 수 있습니다.여기는 몇 가지 기본적인 문법들이다.
3
31
기호
일치
. (dot)
모든 단일 문자
\d
임의의 숫자
[A-Z]
A-Z 문자(대문자)
[a-z]
a-z 문자(소문자)
[A-Za-z]
a-z 문자(대소문자 구분 안 함)
+
하나 이상의 일치(예:\d+는 하나 이상의 숫자 문자와 일치)
[^/]+
'/' 이 아닌 하나 이상의 문자
*
0개 또는 이전 표현식(예:\d? 0개 또는 숫자 일치)
*
0자 이상 일치(예:\d*0자 이상 숫자 일치)
{1,3}
한 개와 세 개(포함) 이전의 표현식(예를 들어\d{1,3}은 한 개 또는 두 개 또는 세 개의 숫자와 일치함)
정규 표현식에 대한 자세한 내용은http://www.djangoproject.com/r/python/re-module/.
Django가 요청을 처리하는 방법
브라우저를 통해 두드리면http://127.0.0.1:8000/hello/Helloworld 메시지를 방문하러 왔을 때python 관리자를 실행하십시오.py runserver, 스크립트는 관리자에 있습니다.py 같은 디렉터리에서 setting이라는 이름을 찾습니다.py의 파일입니다.이 파일은 이 Django 프로젝트에 대한 모든 설정 정보를 포함하고 있습니다: TEMPLATEDIRS , DATABASE_NAME, 등.가장 중요한 설정 시 ROOTURLCONF, 이 사이트에서 Python의 모듈이 사용될 것을 URLconf로 알려 줍니다.
언제py startproject 생성 파일 settings.py와urls.py요?자동으로 생성된 settings.py에는 하나의 ROOT 가 포함됩니다.URLCONF 설정은 자동으로 생성되는 urls를 가리키는 데 사용됩니다.py. 파일 settings를 엽니다.py당신은 다음과 같이 볼 수 있습니다.
ROOT_URLCONF = 'mysite.urls'

5
대응하는 파일은 mysite/urls입니다.py
URL/hello/에 액세스하면 Django가 ROOTURLCONF 설정은 URLconf를 마운트합니다.다음에 일치하는 URLconf의 URLpatterns를 찾을 때까지 순서대로 일치합니다.이 일치하는 URLpatterns를 찾으면 관련된view 함수를 호출하고 HttpRequest 대상을 첫 번째 인자로 합니다.뷰 기능이 HttpResponse를 반환해야 합니다.일단 완성하면, Django는 남은 변환 Python의 대상을 HTTP 헤더와 바디가 있는 웹 Response로 변환합니다.
요약:
들어오신 요청 전입/hello/.

딱꼬 통과. 로또에서...루트 URLconf.

Django는 URLconf의 모든 URL 모드에서/hello/와 일치하는 첫 번째 항목을 찾습니다.

일치하는 것을 찾으면 보기 함수를 호출합니다

보기 함수가 HttpResponse를 반환합니다.

Django가 Http Response를 적합한 HTTP response로 변환하여 웹 페이지에 4URLconf 팁
urls.py도 python 파일이기 때문에 이 파일에서python이 허용하는 모든 문법을 사용할 수 있습니다.
앞서 설명한 예를 먼저 살펴보십시오.
from django.conf.urls import patterns, include, url
from books.views import hello, search_form, search, contact, thanks

urlpatterns = patterns('',
    url(r'^hello/$', hello),
    url(r'^search/$', search),
    url(r'^contact/$', contact),
    url(r'^contact/thanks/$', thanks),
)

모든 경로가 일치하려면 상응하는 모듈을 가져와야 하기 때문에 app의 규범이 점점 커질 때 두 번째 줄의 import 문장은
길수록그래서 다음과 같은 몇 가지 방법으로 반드시 할 수 있다.
1. import에서 모듈로 가면 돼요. 함수 안 써도 돼요.
from django.conf.urls import patterns, include, url
from books import views
urlpatterns = patterns('',
    url(r'^hello/$', views.hello),
    url(r'^search/$', views.search),
    url(r'^contact/$', views.contact),
    url(r'^contact/thanks/$', views.thanks),
)

2. 실행해야 하는views 함수를 문자열로 표시하려면 전체 경로를 써야 합니다
from django.conf.urls import patterns, include, url

urlpatterns = patterns('',
    url(r'^hello/$', 'books.views.hello'),
    url(r'^search/$', 'books.views.search'),
    url(r'^contact/$','books.views.contact'),
    url(r'^contact/thanks/$', 'books.views.thanks'),
)

3. 더 간단한 문자열 쓰기 patterns ()의 첫 번째 인자가 필요합니다
from django.conf.urls import patterns, include, url

urlpatterns = patterns('books.views',
    url(r'^hello/$', 'hello'),
    url(r'^search/$', 'search'),
    url(r'^contact/$','contact'),
    url(r'^contact/thanks/$', '    thanks'),
)

클래스: Django는 깨끗하고 우아한 URL 방안을 제공합니다. URL 프로필은 표준python 파일로 동적 설정을 지원합니다.본질은 URL 모드와 호출된 뷰 함수 사이의 매핑 테이블이며 가장 간단한 구성 파일은 다음과 같습니다.
(1) 함수 대상을 전달하는 방식:python에서 함수는 일급 대상으로 다른 변수를 전달하는 것처럼 전달할 수 있다.함수 대상을 전달하는 방식을 사용하면 함수 대상을 포장할 수 있다
from django.conf.urls.defaults import *
from sailing.manager.views import search

urlaptterns = patterns('',
    url(r'^search$',search),
)

(2) 문자열 전달 방식: 문자열 방식을 사용하면 import 관련 모듈을 사용하지 않고 유니버설 접두사를 사용할 수 있다(patterns 함수의 첫 번째 인자는 하나의 문자열로 보기 함수의 유니버설 접두사를 나타낸다)
from django.conf.urls.defaults import *

urlaptterns = patterns('sailing.manager.views',
    url(r'^search/$','search'),
)

(3) 여러 patterns() 객체를 추가하고 덧붙이면 됩니다.
from django.conf.urls.defaults import *

urlaptterns = patterns('sailing.manager.views',
    url(r'^search/$','search'),
)
urlaptterns += patterns('',
    url(r'^admin/', include(admin.site.urls)),
)

(4)include() 함수
include()
your urlpatterns can “include” other URLconf modules!
일반적으로 분류 처리에 사용되며 프로젝트의 urls를 고도로 통일시킵니다. 예를 들어:
urlpatterns +=patterns('',
     (r'^blog/',include('myblog.urls')),        #myblog app  urls
     (r'^manage/',include('manager.urls')),     #manage app  urls
)

참고:
(1),include ()의 정규 표현식은 $(문자열 끝 일치 문자) 를 포함하지 않지만, 크로스바/를 포함합니다.
(2) Django가include()를 만날 때마다 일치하는 URL을 차단하고 나머지 문자열을 포함된 URLconf로 보내서 처리합니다.
마치 myblog에서.app에서 urls는 다음과 같습니다.
# myblog.app   urls
urlpatterns =patterns('myblog.views',
     (r'^index/$','index'),     #                       
)

좋은 웹페이지 즐겨찾기