장고 템플릿 언어 -1 : 완전한 데이터 수집 예

A, 장고 양식 (양식) 요청 :

    기본 양식 양식의 내용을 얻기 위해 요청을 GET 때 엽니 다.

    점 POST 요청, 양식 제출 양식을 제출할 때.

    위의 차이의 내용을 작성하는 양식을 얻으십시오 :

django.shortcuts 가져 오기 HttpResponse에에서 
django.shortcuts가 가져 오기에서 렌더링, 리디렉션 

DEF 로그인 (요청) : 
    # 요청는 사용자가 제출 한 모든 정보가 들어 있습니다. 
    = ERROR_MSG '' 
    IF request.method == '는 POST': 
        사용자 = request.POST.get ( '사용자', 없음)를 사용하는 방법을 가져 오기 // '어떤 사용자 키 할당 없음이있는 경우, 사용자의 키를 
        PWD = 요청 .POST.get ( 'PWD'없음)을 얻을 // 입력 객체 속성 명 사용자와 단일 형태 PWD 방법이다. 
        사용자 == '123'IF 및 PWD == '123456' 
            리디렉션 ( 'http://www.baidu.com')를 반환 
        다음 다른 
            ERROR_MSG = '사용자 이름이나 암호' 
    
    제 (렌더링 요청을 반환 '을 login.html을 '{'ERROR_MSG ': ERROR_MSG })


두 {{키}}

        키에 지정된 {{}} HTML 파일이 사전 views.py 투과 키 값에 대응하는 클라이언트에 표시되는 HTML이 일반적이다.

        HTML

<SPAN> ERROR_MSG {{}} <SPAN>


세, HTML 데이터 사전과 목록을 읽어

        사전 : 사용 코드 키 읽기 읽기 :. Dict_name.key을

        목록 : 인덱스 읽기, list_name.0를 사용합니다.

        views.py

데프 (요청)을 보여 
    DICT_NAME = { '이름을': '樱', '나이'19 '메일': '[email protected]', '즐겨 찾기': [ '축구', '노래', '요리사 ']} 
    (DICT_NAME를 home.html을'반환 요청을) 렌더링 '

        사전 HTML :

<p> dictname.name {{}} </ p>樱\\ 
<p> dictname.age {{}} </ p> 19 \\ 
<p> dictname.mail {{}} </ p> \\ [email protected]

        HTML 목록

<p> list_name.0 {{}} </ p> 축구 \\ 
<p> list_name.1 {{}} </ p> 노래 \\ 
<p> list_name.2 {{}} </ p> \\ 쿡


네, for 루프에서 HTML :

        {마커 루프, 그리고 {%의 ENDFOR % 사용} End 문주기를} %% 사용

{k에 대한 % DICT_NAME %에서 V} 
    \\ HTML内容
    <p> {{K}} {{V}} </ p> 
{% ENDFOR %}
//views.py 
(요청 'index.html을'{[ 'A', 'B', 'C'] LIST_NAME '}) 렌더링 반환 

{LIST_NAME %로의 I %} 
    <p> {{I }} </ P>를 // B, C 
{%의 ENDFOR의 %}

다섯, HTML주기의 경우 :

{% 만약 조건 %} 1. 
    HTML 콘텐츠 \\ 
    <P> K {} {} {{V}} </ P> 
{%} %의 ELIF 조건 2 
    ... 
{다른 %%} 
    ... 
{%의 ENDFOR %}


여섯, views.py GET HTML 템플릿 들어오는 데이터

    데이터의 HTML을 방법은 제출 일반적으로 두 가지 종류의 사용, 많은이 있습니다 : POST와 GET

        1, POST 요청 방법 : 데이터를 갱신, 수정 일반적이다.

        2, 방법 요청을 GET : HTTP : 예를 들어, URL이 표시 제출 \\ localhost를 \ 얼굴을 \ ID = 1 이름 = 데이비드, 일반적으로 서버에서 데이터를 요청하는 데 사용?

        3, 其它의 .put, 삭제, 머리, 옵션 ....

        4, 폼 형태의 지정된 데이터 업로드 타입 ->에 enctype = '다중 / 폼 데이터'

     views.py 데이터 수집 방법

        1, POST.get ( '이름', '기본'), 고유 값 수집 요소, 그렇지 않은 경우는, 디폴트 값이 할당됩니다

        2 POST.getlist ( '이름', '디폴트 값') 다치 요소의 목록은 그렇지 않다면, 디폴트 값을 할당

get_Data DEF (요청) 
    get_post request.POST.get = ( '_ 이름')는 사용자 _ #라는 HTML 요소의 값 <INPUT 이름 = "사용자 _ '> 가져 
    get_post request.POST.get = ('_ 이름 '없음) # 사용자 _ 요소 발견되지 없음 리턴 
    get_list request.POST.getlist = ( '호의') # 얻었다 체크 박스를 HTML의 여러 값 
    get_get request.GET.get = ( '_ 이름') #의 문헌 
    get_get = request.GET.get ( '_ 이름'없음) # 수득 된 
    get_get request.GET.getlist = ( '_ 이름')

        3 FILES.get는 ( '이름') , 업로드 오브젝트 파일을 취득하는 기본 파일 이름,
                obj.name 파일 이름, 업로드
                obj.chunks ()를 반복자 데이터 블록을 판독 루프에 대한 모든 데이터를 읽을 , obj.chunks에 대한 R ()

GET_FILE DEF (요청) : 
    OBJ = request.FILES.get를 ( 'file_obj') 
    F = 열기 (obj.name은 '+ WB') # 파일 이름 명명을 업로드 할 수 있습니다. 
    I에 대한 obj.chunks () : # 반복 루프는 데이터 청크를 판독한다. 
        f.write (I) 
    f.close ()


세븐, views.py 기능은 URL을 반환합니다 :

    1, 렌더링 : HTML 템플릿 경로를 형식은 : (요청, 'HTML 템플릿 이름', 전송 사전) 렌더링

    2, 리디렉션 : 전체 URL을 반환 형식 : 리디렉션 ( 'http://www.baidu.com')

    3, HttpResponse에는 다음 형식의 HTML 문자열을 반환 HttpResponse에를 ( '<p>이 중 하나의 예입니다 </ P>')

show_data DEF (요청) : 
    V는 = 1234 
    점프 #의 국 
    반환 렌더링 (요청, 'index.html을' , { "DICT"V}) 
    역 # 점프 외부 
    반환 리디렉션 ( 'http://www.baidu.com ') 
    # 직접 HTML 문자열을 반환합니다. 
    HttpResponse에 반환 ( '<p> 경고! </ P>')



파일 업로드 :

urls.py

발 오기 django.conf.urls의 URL 
오기 django.contrib ADMIN에서 
index.views 오기 
의 urlpatterns = [ 
    URL (R & LT 'ADMIN ^ /'admin.site.urls) 
    URL은 (R & LT는 index.views '$ ^ MAINS'. 메인), #에 http : // IP / mians는 views.py 인덱스 디렉토리에서 전원의 기능으로 이동 
    ## URL (R '', index.views.mains ), #에 http : // IP를, 점프 메인 인덱스 디렉토리에 views.py에서 함수 
    (R '^ 전원 / 최대 URL $', index.views.rev_file) # r에 '^ $' 모든 단어의 주소를 포함, 그렇지 않으면, 말 ^ $ 정의 시작 스티어링 혼란 
]

index.html을

    은 {{}}, {%%} 템플릿 언어를 사용합니다. 동시 업로드

<! DOCTYPE HTML> 
<HTML LANG = "EN"> 
<head> 
    <메타 문자 집합 = "UTF-. 8"> 
    <제목> 제목 </ 제목> 
</ head> 
<body> 
<form 조치 =에 enctype "최대"= "다중 / 폼 데이터"방법 = "POST">   
 행동 = "최대"현재 URL의 최대 + 나타낸다; // 액션, 루트 디렉토리 + 최대를 위해 "업 /"= URL을 행동으로 이동 
             
 //에 enctype, 양식을 파일 형태로 수신 될 수              
    <INPUT 유형 = "텍스트"이름 = "USER_NAME"자리 = "... 입력 이름"/> 
    <INPUT 이름 = "up_file"유형 = "파일"/> 
    = "파일"// 유형, 나타내는 데이터 파일 업로드 
    <p> 
        분류하여 : 
        소프트웨어 <input 타입 = "체크 박스 "값 ="技术'NAME = "f_type"> 
        HTML <input 타입 = "체크 박스"값 = "HTML"NAME = "f_type">  
        编程<input 타입 = "체크 박스"값 = "编程'NAME ="f_type " >
    </ p> 
    //创建多选框 
    <INPUT 유형 = 값 = "제출", "제출"> 
</ FORM> 
{%} // f_name %의 사용은 파일 업로드, 파일 업로드, 표시 정보 여부를 판단되는 경우 경우 
<P> <스팬 스타일 = " 글꼴 스타일 : 기울임 꼴 "> {{u_name }} </ SPAN>, 파일 :! {{f_name}} 성공 </ P> 업로드 
카테고리 : 
    선택한 파일을 읽기 위해 // {F_TYPE의 %에 사용 I의 %를} 분류는  
        {{}} I 
    {%} ENDFOR %                     
{%} % 다른 업로드되지 // 파일 큐 
귀하가 <P> <스팬> 파일을 업로드하지 않습니다! </ SPAN> </ P> 
{%} ENDIF % 
</ BODY> 
</ HTML>

테스트 / views.py

(가)에서 가져 오기를 렌더링 django.shortcuts 
가져 오기 운영 체제의 
. #은 당신의 현재 뷰 배경 화면 만들기 

: DEF MAINS (요청) 
    처음 #, URL을 열어 index.html 페이지는 입력 
    (가) 렌더링 반환 (요청, 'index.html을') 

DEF (요청) rev_file : 
    # 리셉션 양식 서식 데이터 제출 
    f_name를 = ' 
    u_name =' 
    F_TYPE = ' 
    IF request.method =='는 POST ' 
        f_obj = request.FILES.get ('up_file '없음)             
        # 오브젝트 파일을 가져, 인쇄 (f_obj) 파일이 __repr__ 또는 __str__을 정의하기 때문에 파일 이름,하지만 실제 목적이며, 
        IF f_obj : 
            당신이 파일을 업로드 한 경우 # 
            f_name = f_obj.name 
            u_name = request.POST.get ( '_ 이름', 없음)
            f_type request.POST.getlist = ( 'f_type') #의 체크 박스 또는 여러 데이터 타입 옵션 옵션 얻을
            F = 개방 (os.path.join ( '업 'f_name) 'WB +') # 업로드 파일 manage.py 동일한 디렉토리 폴더 
            f_obj.chunks ()에 대한 I : #chunks (), 반복자 사용 읽어 
                f.write를 (I) 
            f.close () 

    ({: f_name, 'u_name': u_name, '이 F_TYPE'는 F_TYPE 'f_name'} 'index.html을'요청) 렌더링을 반환 
    # 다시 인덱스를. 문장의 내용이 나타나는 경우 HTML 콘텐츠는하지만, 브라우저의 주소 변경, 및 콘텐츠 될 것입니다



추천

출처blog.51cto.com/yishi/2435284