>  기사  >  웹 프론트엔드  >  Python Django를 개발에 사용한 경험을 요약합니다.

Python Django를 개발에 사용한 경험을 요약합니다.

php中世界最好的语言
php中世界最好的语言원래의
2018-02-26 09:17:101832검색

이번에는 python Django개발 경험을 요약해서 가져오겠습니다. Python Django 개발 시 Notes는 무엇인지, 다음은 실제 사례입니다. 살펴보겠습니다.

Django를 처음 접한 것은 대학교 3학년 때였습니다. 실제로 Django를 사용하여 프로젝트를 한지는 거의 4년이 되었습니다. 제가 가장 좋아하는 것은 실제로 Django의 ORM 프레임워크입니다. 회사의 프로젝트는 앞뒤로 분리되어 있어 백엔드 인터페이스 개발에 Django를 사용하는 것이 매우 효율적입니다.


다음은 Django 개발 경험을 요약한 것입니다. 먼저 가장 기본적인 몇 가지에 대해 이야기해 보겠습니다.

virtualenv를 사용하여 개발 환경을 격리합니다.

pip를 사용하여 프로젝트 종속성을 관리하고, pip 동결 > requirements.txt를 사용하여 종속 모듈 및 버전을 저장합니다.

이 웹사이트에서 제공하는 gitignore.io를 사용합니다. .gitignore 파일 관리 코드 기본 파일

패키징 및 게시

프로젝트 패키징 및 게시는 Docker를 사용하여 Django 프로젝트의 Dockerfile은 특히 간단합니다.

FROM python:3.5
COPY ./requirements.txt /src
WORKDIR /src
RUN pip install -r requirements.txt
COPY . /src
EXPOSE
CMD uwsgi --http :--wsgi-file<path/to/wsgi.py>

이 Dockerfile 템플릿은 Django 프로젝트의 80%를 처리할 수 있습니다.

로그 구성

저는 Docker를 사용하기 때문에 로그를 파일에 쓰는 것을 포기하고 표준 출력에 직접 썼습니다.

   
# settings.py 
# ...
LOGGING = {
    &#39;version&#39;: 1,
    &#39;disable_existing_loggers&#39;: False,
    &#39;formatters&#39;: {
        &#39;verbose&#39;: {
            &#39;format&#39;: &#39;[application] %(levelname)s %(asctime)s %(module)s %(message)s&#39;
        }
    },
    &#39;handlers&#39;: {
        &#39;console&#39;: {
            &#39;level&#39;: &#39;DEBUG&#39;,
            &#39;class&#39;: &#39;logging.StreamHandler&#39;,
            &#39;stream&#39;: sys.stdout,
            &#39;formatter&#39;: &#39;verbose&#39;
        },
    },
    &#39;loggers&#39;: {
        &#39;app&#39;: {
            &#39;handlers&#39;: [&#39;console&#39;],
            &#39;level&#39;: &#39;DEBUG&#39;,
            &#39;propagate&#39;: True,
        },
    },
}


uwsgi의 새 버전은 이미 웹앱 로그를 수집하여 표준 출력으로 출력할 수 있습니다. 로그를 수집하고 관리해야 하는 경우 Docker 로그 수집 도구를 사용하여 Docker 컨테이너의 로그를 직접 수집할 수 있습니다.

자동 테스트

순수한 백엔드 프로젝트이기 때문에 엔지니어는 자동화 테스트를 통해 자신의 코드를 테스트할 수 있습니다. Django 자체는 테스트를 위한 훌륭한 지원을 제공합니다. sqlite를 사용하여 테스트 데이터베이스와 메모리 기반 캐시를 구축하면 테스트로 인해 다른 시스템에 대한 의존도가 증가하지 않습니다. 더 적은 노력으로 개발하세요.

자동 테스트 코드 작성 외에도 테스트 커버리지를 계산할 수 있어야 합니다. 현재 우리는 Coverage.py 도구를 사용하고 있는데 node.js의 이스탄불만큼 사용하기 쉽지 않고, 출력 보고서도 이스탄불만큼 상세하고 읽기 쉽지 않습니다. 그러나 "데드 코드"를 확인하는 데는 여전히 유용합니다.

http 코드 테스트

일부 프로젝트는 WeChat 인증, 결제, SMS 및 기타 일반 시스템과 같은 더 많은 타사 시스템에 연결해야 하며 수직 비즈니스 분야에는 다른 시스템이 있을 수 있습니다. 인터페이스 도킹 코드의 이 부분도 테스트에 포함되어야 합니다. 결국 Python은 스크립팅 언어이므로 코드는 오류가 발생하기 쉽습니다.

이것은 일반적으로 응답 모듈을 사용하여 http 요청을 모의합니다.

시간 제한 작업

시간 제한 작업을 수행해야 하는 일부 Django 프로젝트가 있습니다. 우선, Linux에 내장된 crontab을 절대 사용하지 마세요. 가장 큰 문제는 유지관리 비용이 많이 들고, 이 구성은 언젠가 잊어버릴 수도 있다는 점이다.

현재 방법은 Django Command의 기능을 사용하여 예약된 작업을 명령으로 캡슐화하는 것입니다. 이 명령으로 스케줄러를 실행합니다. 다음과 같습니다.

import schedule
from django.core.management.base import BaseCommand
class Command(BaseCommand):
    def handle(self, *args, **kwargs):
        schedule.every(45).minutes.do(do_this)
        schedule.every().day.at(&#39;04:00&#39;).do(do_that)
        while True:
            schedule.run_pending()
            time.sleep(1)

이에 대해 궁금한 점이 있으면 언제든지 문의하실 수 있습니다. 저는 학습 방법, 체계적인 학습 계획, 학습 효율성에 대해 심도 있는 연구를 해왔습니다. 모두가 피하는 데 도움이 되기를 바랍니다. 실수. Python 초보자 교환 그룹의 상위 3개는 463, 중간 3개는 024, 마지막 3개는 091입니다.

이 사례를 읽으신 후 방법을 마스터하셨다고 생각합니다. 더 흥미로운 정보를 보려면 주목해 주세요. 다른 PHP 중국어 웹사이트 관련 기사!

관련 읽기:

vue CSS 애니메이션

이미지와 뷰 태그 사이의 간격에 대한 솔루션

하위 구성 요소에서 슬롯이 사용되는 이유

getBounding 사용 방법 ClientRect() 대상 div 컨테이너의 스크롤 고정 달성

위 내용은 Python Django를 개발에 사용한 경험을 요약합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
이전 기사:Vue CSS 애니메이션다음 기사:Vue CSS 애니메이션