Django views.py와 html 사이의 매개 변수 전달 관계

4552 단어 Django
Django의 View 섹션은 models에 정의된 필드와 코드로 상호 작용하는 방법입니다.전통적인 MVC 층 정의와 약간 다른 것은 Django에서 View의 기능은 페이지 요청에 대한 응답과 논리적 제어이고 페이지 내용의 표시는 Django의 Template 템플릿으로 이루어진다는 것이다.우리는 Django의 View를 각종 기능을 실현하는 Python 함수로 이해할 수 있으며, View는 URL 프로필urls를 받아들이는 것을 책임진다.py에서 정의한 URL은 전송 및 응답 처리를 하고 Django가 요청을 받은 후에 해당하는 View 함수를 호출하여 기능을 완성한다.article 모듈의views.py 파일 코드는 다음과 같이 정의됩니다.
views.py 코드 정의
from django.shortcuts import render_to_response   
from news.article.models import List   
 
def news_report(request):   
 article_listing = []   
 for article_list in List.objects.all():   
   article_dict = {}   
   article_dict['news_object'] = article_list   
   article_dict['item_count'] = article_list.item_set.count()   
   article_dict['items_title'] = article_list.title  
   article_dict['items_complete'] = article_list.item_set.filter(completed=True).count()   
   article_dict['percent_complete'] =  
        int(float(article_dict['items_complete']) / article_dict['item_count'] * 100)   
   article_listing.append(article_dict)   
 return render_to_response('news_report.html', { 'article_listing': article_listing })   
이것은 간결한 파이톤 코드입니다. 이 코드에서 Django의 함수가 어떤 작업을 했는지 봅시다.
List.objects.all 방법은 news 목록의 모든 기록 항목을 되돌려줍니다. Django는 백엔드 데이터베이스에 따라 해당하는 SQL 문장으로 변환하여 백엔드 데이터베이스에서 조회 결과를 실행하고 되돌려줍니다.
모든 아티클 문장에itemset 속성은 news 뉴스 항목의 모든 item 항목을 대표합니다.조회 조건을 설정하려면 item 을 사용하십시오set.filter 방법으로 특정 요구에 부합되는 item 항목을 되돌려줍니다.
render_to_response 함수는 브라우저가 지정한 HTML 페이지를 되돌려줍니다. 페이지는 Django의 Template 템플릿으로 요청한 페이지의 내용을 보여 줍니다.
view 부분의 코드에서 페이지 표시 템플릿이 news 로 지정되었습니다report.html.사실, Django 프로젝트에서 템플릿을 만드는 것은 매우 편리한 일입니다. 다음은article 디렉터리에서 이 템플릿 페이지를 만듭니다. 먼저templates라는 폴더를 새로 만들고 이 템플릿 디렉터리에 필요한 news 를 만듭니다.report.html 템플릿 파일, 템플릿 코드는 다음과 같습니다.
news_report 템플릿 코드
< html>   
 < head>   
   < meta http-equiv="Content-Type" content="text/html" />   
뉴스 통계 목록  < /head>   
 < body>   

뉴스 통계 목록

{% for list_dict in article_listing %}   
   < ul>   
  • 뉴스의 분류: {{{list dict.items title}}
  • 뉴스 수: {{list dict.item count}
  • 게시된 뉴스 수:
  •            {{ list_dict.items_complete }} ({{ list_dict.percent_complete }}%)< /li>   
       < /ul>   
    {% endfor %}   
     < /body>   
    < /html>   
    일반적으로 Django의 템플릿 코드는 일반적인 HTML 코드와 큰 차이가 없고 Django의 특정한 템플릿 태그만 추가됩니다. 이런 태그는 개발자가 Django 템플릿에 페이지 논리를 추가할 수 있습니다. 예를 들어views를 추가합니다.py에서renderto_response 함수가 되돌아오는 데이터베이스 결과 집합이 페이지에 나타나고, Django 특유의 탭은 템플릿 페이지에서 '{%' 로 시작하고 '%}' 로 끝납니다.Django 템플릿에 포함된 변수는 "{"로 시작하고 "}"로 끝납니다.
    위 템플릿 코드에는 태그 {% for news dict in article listing%} 및 {% end for%}가 사용됩니다.이러한 태그는 Django 템플릿 처리 메커니즘이 news의 item 항목을 페이지에서 추출하고 for 순환 내부에서articlelisting의 속성은 View에서 대응하는 데이터 항목 필드의 값을 얻어 news 항목의 타이틀 제목과 news의 item 항목 수를 표시합니다.
    Django의View와Template가 모두 준비가 되었을 때, 다음은 Django가 프로젝트를 저장하는 템플릿의 위치를 알려주기 위한 몇 가지 설정만 필요합니다. 이것은 설정 파일setting이 필요합니다.py의 TEMPLATEDIRS 항목을 설정합니다.이 예에서 템플릿 파일'news report.html'의 저장 경로를 추가하면 Django가 View를 처리한 결과 집합을 지정한 템플릿을 통해 되돌려줍니다.이 예제에 적용된 구조에 따라 TEMPLATEDIRS 매개변수의 컨텐트 설정은 다음과 같습니다.
    './article/templates', 
    여기서 Django는 경로의 맨 끝에 쉼표를 추가해야 한다는 것을 잊지 마십시오.다음은article에 접근할 때 URL 방향을 바꾸는 주소만 설정하면 됩니다.urls를 엽니다.py 파일, admin 백그라운드 관리의 전환 주소 다음 줄에 다음과 같은 문장을 추가합니다.
    (r'^report/$', 'news.article.views.news_report'),
    여기서 문장의 맨 끝에도 쉼표 단락의 끝이 있어야 한다.여기서 볼 수 있듯이 Django의 URL 전송은 매우 간결하게 설계되었고 설정 파일urls에 있습니다.py에서view에 대응하는 전송 요청은 두 부분으로 구성되어 있으며 첫 번째 부분은 정규 표현식에 따라 일치하는 URL 주소를 지정하고 두 번째 부분은View에서 전송 요청을 처리하는 함수입니다.
    이 절차를 마치면 명령 알림부호 아래 Django 서버를 다시 시작할 수 있습니다. 상기 노력의 성과를 보고 브라우저에서 링크를 열 수 있습니다.http://127.0.0.1:8000/report/, 뉴스 목록의 귀환 인터페이스를 볼 수 있습니다.페이지에는 데이터베이스에 추가된 모든 뉴스의 분류 통계 정보가 표시됩니다.특히 Django 템플릿은 여러 층의 끼워넣기를 지원하고 각 층마다 DIV+CSS 방식으로 레이아웃을 완성할 수 있어 사이트 페이지가 통일된 스타일을 따라 보기 좋게 보일 수 있다.
    이러한 모든 과정에서 Django를 이용한 웹 개발에 대해 초보적인 소개를 하였다.응용 프로그램에서 쓴 파이썬 코드는 몇 십 줄에 불과하다. 다른 개발 언어와 비교하면 Django는 매우 편리하고 실용적이다. 마지막으로 Django가 우리가 어떤 일을 했는지 되돌아보자.
    Django의 대상 관계 매핑 모델을 통해 뉴스 분류와 뉴스 항목을 저장하는 두 장의 데이터 테이블을 구축하고syncdb 명령으로 데이터베이스에 동시 업데이트합니다.
    Django의 관리 기능을 빌려 응용 프로그램에서 예쁘고 실용적인 백엔드 관리 인터페이스를 만들었다.
    Django 함수와 탭을 이용하여view 기능 모듈과 데이터 결과를 표시하는 Template 템플릿을 작성했습니다.

    좋은 웹페이지 즐겨찾기