Django 학습 총결의 3 - 보기와 URL 설정

3460 단어 django
1. 뷰 작성
1. mysite 폴더 아래에 새 파일을views라고 명명합니다.py, 컨텐츠:
4
from django.http import HttpResponse

def hello(request)
	return HttpResponse("Hello World")
보기 함수마다 최소한 하나의 매개 변수가 있는데 보통 Request라고 부른다.
2, 수정 urls.py 파일,views 추가.py에서 보기 함수와 URL의 매핑
from django.conf.urls.defaults import patterns, include, url
from mysite.views import hello

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

이 보기 함수 hello의 인용 추가:from django.views import hello;url과 보기 함수의 맵을 추가합니다: ('^hello/$',hello) 이것은 원조입니다. 첫 번째 부분은 정규 표현식으로 url 주소를 가리키고 두 번째 대응하는 것은 보기 함수 이름입니다.그 중에서 위 화살표는 표현식이 문자열의 머리에 일치하도록 요구하고 달러 기호는 표현식이 문자열의 끝에 일치하도록 요구한다.
만약 우리가 끝에 $모드가 아닌 '^hello/' 를 사용한다면,/Hello/로 시작하는 URL은/Hello/foo와/Hello/bar와 일치할 것입니다. 예를 들어/Hello/뿐만 아니라.예를 들어, 첨호 (^), 'hello/$' 를 무시하면, hello/끝으로 끝나는 URL은 다음과 같습니다. 예를 들어/foo/bar/hello/입니다.만약 우리가 간단하게 Hello/, 즉 ^ 시작과 $끝이 없다면, Hello/를 포함하는 URL은 다음과 같습니다. 예를 들어/foo/hello/bar.따라서 우리는 이 두 기호를 사용하여/hello/만 일치하고 많지도 적지도 않다는 것을 확보한다.
3. 테스트
실행 서버:python manange.py runserver
브라우저에서 다음을 입력합니다.http://127.0.0.1/hello/정규 표현식
기호
일치
. (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}은 한 개 또는 두 개 또는 세 개의 숫자와 일치함)
django에서 요청을 처리하는 프로세스:
django-admin을 사용하고 있습니다.py startproject mysite 프로젝트를 만들 때 자동으로 설정 파일 setings.py 파일의 ROOTURLCONF 할당 값은 다음과 같습니다.
ROOT_URLCONF = 'mysite.urls'

이 사이트에서 Python의 모듈이 사용될 것임을 URL conf로 알려 줍니다.
1. URL/hello/에 접근할 때django는 setings에 따른다.py의 ROOTURLCONF 설정은 URLconf를 마운트합니다.
2, 각각 URLpatterns와 일치합니다.
3. 일치에 성공하면 상응하는 보기 함수를 호출하고 보기 함수는 HttpResponse를 되돌려줍니다
4. django는 HttpResponse를 적당한 HTTP response로 전환하여 웹 페이지로 보여준다.
3. 동적 내용
현재 시간을 동적으로 표시합니다,views.py의 내용
from django.http import HttpResponse
import datetime

def hello(request):
    return HttpResponse("Hello world")

def current_datetime(request):
    now = datetime.datetime.now()
    html = "It is now %s." % now
    return HttpResponse(html)
urls.py 내용:
4
from django.conf.urls.defaults import patterns, include, url
from mysite.views import hello,current_datetime

urlpatterns = patterns('',
	('^hello/$', hello),
	('^datetime/$', current_datetime),
)
4. 동적 URL
방법: 와일드카드 사용
예: 시간차 계산:
urls.py에 추가
4
(r'^time/plus/(\d{1,2})/$', current_datetime),
\d가 표시하는 숫자, {1,2}는 두 자리 이내, 즉 0~99로 제한
r, 안의 반사봉을 처리할 필요가 없다는 뜻이다.
이 숫자들을 매개 변수로 보기 함수에 전달하려면 괄호로 묶어야 한다.
보기 함수:
def hours_ahead(request, offset):
	try:
		offset = int(offset)
	except ValueError:
		raise Http404()
	dt = datetime.datetime.now() + datetime.timedelta(hours=offset)
	html = "In %s hour(s), it will be %s." % (offset, dt)
	return HttpResponse(html)

url에서 포획된 오프셋을 int 형식으로 바꾸는 이유는 url에서 포획된 매개 변수는 영원히string 형식이기 때문입니다.
프로그램에 추가할 수 있는 기능: assert False 트리거 오류 페이지, Local vars 보기를 통해 부분 변수를 볼 수 있습니다. 이것은 디버깅 방식입니다.이 문서는 Eliot의 오리지널입니다. 전재는 출처를 밝혀 주십시오.http://blog.csdn.net/xyw_eliot/article/details/8842120

좋은 웹페이지 즐겨찾기