장고 학습 경험

高洛峰
풀어 주다: 2016-10-17 14:07:22
원래의
1786명이 탐색했습니다.

Django는 MVC 디자인 패턴을 따르는 Python 웹 개발 프레임워크인데, Django에서는 보통 MTV(model-template-views)라고 부릅니다. 모델은 주로 엔터티 매핑, 엔터티 관계 및 일부 엔터티 방법을 저장하는 데이터 지속성 계층입니다. 템플릿은 주로 데이터를 표시하는 데 사용되는 프리젠테이션 레이어입니다. Django의 뷰 엔진은 이를 HTML로 렌더링하여 표시할 수 있습니다. 뷰는 Django에서 모델과 템플릿 사이의 브리지 역할을 하는 비즈니스 논리 계층입니다. 또한 모델을 처리하고 템플릿에 데이터를 제출하며, 해당 논리를 완료한 후 모델 수정 사항을 제출합니다.

개인적으로 여기서 MTV와 .NET MVC는 같은 의미를 표현한다고 생각합니다. 가장 큰 차이점은 공식 문서에 따르면 .net 뷰에서는 프레젠테이션 레이어인 반면 Django에서는 비즈니스 로직 레이어라는 것입니다. , 이는 뷰에 대한 이해가 다르다는 것을 의미할 뿐입니다. 실제로는 컨트롤러로 사용할 수 있습니다. 아래에서는 개인적인 이해를 바탕으로 Django의 구문과 기능을 소개하겠습니다.

1. 뷰 및 URL

Django에서 뷰는 일반적으로 해당 패키지에 배치되는 views.py 모듈입니다. Views.py에는 특정 논리 함수가 포함되어 있습니다. 각 함수는 하나 이상의 템플릿에 해당합니다. 템플릿과 뷰 간의 연결을 설정하려면 특정 라우팅 메커니즘이 필요하므로 Django는 일반적으로 루트 디렉터리에 라우팅 프로그램 urls.py를 가지고 있습니다. . 경로는 패턴으로 생성되고 정규식으로 설명되므로 라우팅 메커니즘의 유연성이 크게 향상됩니다.

예:

views.py

def home(request):
    values = request.META.items()
    values.sort()
    return render_to_response('home.html',{"values":values})
urls.py
from django.conf.urls.defaults import *
    urlpatterns = patterns('',('^$',home),)
로그인 후 복사


여기에서 요청하세요. 매개변수는 필수이지만, 요청에 해당 페이지의 요청 정보가 포함되어 있다면 임의로 이름을 지정할 수 있습니다. sender_to_response는 django.shortcuts에 있으므로 앞에 django.shortcuts import sender_to_response 형식을 선언해야 합니다. request.MATE에는 모든 요청 인터페이스 정보와 사용자 정보가 포함되어 있습니다. shor()는 목록을 작은 것부터 큰 것 순으로 정렬합니다. 반환 값은 home.html 템플릿에 값 변수를 제출하는 것을 의미합니다. URL 패턴의 튜플은 일반 지침 규칙을 추가합니다. 원래 주소가 '^$'와 일치하는 튜플을 제외하면 집으로 연결됩니다. 물론 이는 views.py 파일과 urls.py가 동일한 폴더에 있다는 것을 전제로 하며, 그렇지 않으면 home 네임스페이스를 참조해야 합니다. URL에 여러 값을 전달하려는 경우 ('^([^/]+)/([^/]+) /$'와 같이 전달하려는 일치 값에 대괄호를 추가하면 됩니다. home)을 /some/some/과 일치시키고 일부는 처리 기능 home으로 전달됩니다. 해당 주택은 수락할 적절한 매개변수를 추가해야 합니다.

2. 템플릿

템플릿은 Django에서 데이터가 표시되는 곳으로, 일반적으로 HTML 형식으로 템플릿에 Django의 처리 로직을 {% %}로 작성해야 하며, 변수는 다음과 같습니다. 표시하려면 {{ }}로 작성해야 합니다. Django의 마스터 페이지는 어떤 문서로도 사용될 수 있습니다. 전제는 블록이 채워지거나 교체되도록 선언하려면 {% 블록 이름 %}{% endblock %}을 사용해야 한다는 것입니다. name%} 그런 다음 해당 블록을 호출하면 됩니다.

3. 모델

setting.py의 데이터베이스 사전에서 데이터베이스를 구성합니다. 구성이 완료되면manage.py startapp을 사용하여 앱을 생성하고 모델에 Python 코드를 작성하여 엔터티 매핑을 설명합니다. 예:

models.py

class Publisher(models.Model):
    name = models.CharField(max_length = 30)
    website = models.URLField()
  
def __unicode__(self):
    return self.name
  
class Meta:
    ordering = ['name']
로그인 후 복사


models는 django.db에 포함되어 있으며, 이는 django.db의 공통 기능을 캡슐화합니다. 모델 클래스 인터페이스. CharField()는 max_length, 공백, verbose_name 등과 같은 매개변수를 사용하여 varchar 유형 데이터를 생성합니다. 최대 길이, 비어 있는지 여부 및 표시 이름을 각각 나타냅니다. def__unicode__는 박싱 후 기본 표시를 제공합니다. 이 기능이 설정되지 않으면 기본적으로 개체 유형이 표시됩니다. Meta 클래스는 모델의 기본 정렬 필드를 지정합니다. 동시에 Django는 외래 키 설정 인터페이스도 제공합니다.

class Book(models.Model):
     title = models.CharField(max_length = 100)
     authors = models.ManyToManyField(Author) #多对多关系
     publisher = models.ForeignKey(Publisher) #多对一关系
     publication_date = models.DateField(blank = True, null = True)
로그인 후 복사

생성 후 설정에 앱을 추가하세요. .py 구성 파일 INSTALL_APPS 패키지 경로입니다.

Django는 codefirst를 지원합니다. 데이터베이스를 업데이트할 때 Django는 먼저 sql 문을 생성한 후 이를 실행한 후 실행하여 확인할 수 있습니다. 모델을 실행하거나 py sqlall books를 실행할 수 있습니다. 데이터 삽입을 구현하기 위해 모델 객체를 직접 선언할 수 있으며, save()를 사용하여 저장하고 객체에 대해 delete()를 호출하여 삭제할 수 있으며, 모델에 대해 delete()를 호출하여 삭제할 수도 있습니다. 일괄적으로. 같은 방식으로 업데이트는 객체에 대한 단일 수정과 모델에 대한 일괄 수정을 호출합니다.

4. 통합 하위 프레임워크

django.contrib 패키지에는 현재 admin과 auth에 대해서만 알고 있는 다양한 추가 기능 패키지가 있습니다. 단점은 인터페이스가 약간 추악하다는 것입니다. Admin은 Django에서 공식적으로 제공하는 백엔드 관리 플랫폼입니다. 추가한 앱을 관리할 수 있으며 추가, 삭제, 수정, 확인 등 일반적인 기능을 모두 통합합니다. 호출 코드도 매우 간단합니다. urls.py에서 관리 링크를 활성화하기만 하면 됩니다. 필요한 경우 구성 파일을 직접 변경할 수 있습니다. 앱 관리를 추가하려면 다음 코드를 추가해야 합니다(예: Book 사용):

class BookAdmin(admin.ModelAdmin):
    list_display = ('title', 'publisher', 'publication_date') #显示顺序
    list_filter = ('publication_date',) #过滤列表
    ate_hierarchy = 'publication_date' #激活列表上方的日期查询
    ordering = ('-publication_date',) #排序方式'-'代表倒序
    filter_horizontal = ('authors',) #添加时候的横向选择过滤(此处假设book和authors 是多对多关系)
    raw_id_fields = ('publisher',) #添加时候的选择(此处假设publisher和book是一对多关系)
  
admin.site.register(Publisher)
admin.site.register(Author,AuthorAdmin)
admin.site.register(Book,BookAdmin)
로그인 후 복사


5 . 캐싱 메커니즘

개인적으로 Django에서 제공하는 캐싱 방식은 크게 3가지로 나누어집니다. 전체 사이트 캐시 구성 방식입니다. , 캐시 구성 방법 및 대상 캐시 구성 방법을 확인하세요. 관련 구성 파일을 수정하면 됩니다. 캐싱을 지원하기 위해 memcached와 같은 다른 플러그인을 설치할 수도 있습니다.


관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿