django-distill
이제 웹사이트가 생겼습니다. 자세한 내용은 다음을 참조하세요.
django-distill
Django를 위한 최소 구성 정적 사이트 생성기이자 게시자입니다. 대부분의 Django 버전이 지원되지만 Django 3.x 릴리스를 포함한 최신 버전을 사용하는 것이 좋습니다. 1.7 릴리스부터 django-distill
Python 3만 지원합니다. Python 2 지원은 중단되었습니다. Python 2 지원이 필요한 경우 요구사항.txt 또는 Pipfile에서 django-distill
버전 1.6으로 고정하세요. Python 3.6 이상을 권장합니다.
django-distill
모든 기능을 갖춘 정적 사이트를 내보내는 기능을 통해 기존 Django 사이트를 확장합니다. 대부분 정적인 프런트 엔드를 갖고 있지만 여전히 CMS를 사용하여 콘텐츠를 관리하려는 블로그와 같은 사이트에 적합합니다.
django-distill
정적 HTML로 저장하려는 모든 페이지에 대한 매개변수를 생성하기 위해 작성하기 쉬운 반복 가능한 함수를 사용하여 Django 프로젝트의 URL을 반복합니다. 이러한 정적 파일은 Amazon S3, Googe Cloud Files, Microsoft Azure Storage와 같은 버킷 스타일 원격 컨테이너에 자동으로 업로드되거나 완전히 작동하는 프로젝트의 로컬 정적 버전으로 로컬 디렉터리에 기록될 수 있습니다. 사이트 생성 또는 증류 프로세스를 CI/CD 워크플로에 쉽게 통합하여 커밋 시 정적 사이트를 자동 배포할 수 있습니다. django-distill
Django 프로젝트가 "Jamstack" 스타일 사이트 아키텍처와 호환되도록 하기 위해 Django의 확장으로 정의할 수 있습니다.
django-distill
사용자 정의 렌더러나 기타 자세한 코드를 작성할 필요 없이 기존 Django 프레임워크에 직접 연결됩니다. 또한 django-distill
기존 동적 사이트와 통합하고 전체 사이트가 아닌 페이지의 작은 하위 섹션에 대한 정적 페이지를 생성할 수도 있습니다.
CDN의 정적 파일의 경우 다음 '캐시 버스터' 라이브러리를 사용하여 변경 사항을 푸시할 때 빠른 정적 미디어 업데이트를 허용할 수 있습니다.
? meeb/django-cachekiller
정적 블로그를 생성하고 Netlify의 지속적인 배포를 통해 django-cachekiller
와 함께 django-distill
사용하는 완전한 예제 사이트가 여기에 있습니다.
? meeb/django-distill-예제
pip에서 설치:
$ pip install django-distill
settings.py
의 INSTALLED_APPS
에 django_distill
추가하세요.
INSTALLED_APPS = [
# ... other apps here ...
'django_distill' ,
]
그게 다야.
django-distill
정적 페이지를 생성하므로 HTTP 200
상태 코드를 반환하는 GET
요청을 허용하는 보기만 지원됩니다.
/blog/123-abc
와 같은 URI 매개변수를 사용하고 /blog?post_id=123&title=abc
와 같은 쿼리 문자열 매개변수는 사용하지 않는 것으로 가정합니다. 쿼리 문자열 매개 변수는 명백한 이유로 정적 페이지 생성에 적합하지 않습니다.
이미지 및 스타일 시트와 같은 정적 미디어 파일은 STATIC_ROOT
에 정의된 정적 미디어 디렉터리에서 복사됩니다. 즉, 정적 미디어를 변경한 경우 ./manage.py distill-local
실행하기 전에 ./manage.py collectstatic
실행해야 한다는 의미입니다. django-distill
의도적으로 이 요청을 연결하지 않지만 --collectstatic
인수를 사용하여 활성화할 수 있습니다.
기존 Django 프로젝트가 있다고 가정하고, Django의 표준 path
함수를 대체하고 새로운 키워드 인수 distill_func
및 distill_file
지원하는 distill_path
함수를 포함하도록 urls.py
편집하세요.
distill_func
인수는 iterable 또는 None
반환하는 함수 또는 호출 가능 클래스와 함께 제공되어야 합니다.
distill_file
인수는 전적으로 선택 사항이며 URL 정규식의 반대에서 생성되는 URL을 재정의할 수 있습니다. 이를 통해 /example
과 같은 URL의 이름을 example.html
과 같은 다른 이름으로 바꿀 수 있습니다. v0.8부터 슬래시 /
로 끝나는 모든 URI는 /index.html
로 끝나도록 자동으로 수정됩니다. distill_file
에서 형식 문자열 매개변수를 사용하여 파일 이름을 사용자 지정할 수 있습니다. URL의 인수 값은 예를 들어 위치 인수의 경우 {}
, 명명된 인수의 경우 {param_name}
으로 대체됩니다.
이론적인 블로깅 앱의 증류 설정 예는 다음과 같습니다.
# Replaces the standard django.conf.path, identical syntax
from django_distill import distill_path
# Views and models from a theoretical blogging app
from blog . views import PostIndex , PostView , PostYear
from blog . models import Post
def get_index ():
# The index URI path, '', contains no parameters, named or otherwise.
# You can simply just return nothing here.
return None
def get_all_blogposts ():
# This function needs to return an iterable of dictionaries. Dictionaries
# are required as the URL this distill function is for has named parameters.
# You can just export a small subset of values here if you wish to
# limit what pages will be generated.
for post in Post . objects . all ():
yield { 'blog_id' : post . id , 'blog_title' : post . title }
def get_years ():
# You can also just return an iterable containing static strings if the
# URL only has one argument and you are using positional URL parameters:
return ( 2014 , 2015 )
# This is really just shorthand for ((2014,), (2015,))
urlpatterns = (
# e.g. / the blog index
distill_path ( '' ,
PostIndex . as_view (),
name = 'blog-index' ,
# Note that for paths which have no paramters
# distill_func is optional
distill_func = get_index ,
# '' is not a valid file name! override it to index.html
distill_file = 'index.html' ),
# e.g. /post/123-some-post-title using named parameters
distill_path ( 'post/<int:blog_id>-<slug:blog_title>.html' ,
PostView . as_view (),
name = 'blog-post' ,
distill_func = get_all_blogposts ),
# e.g. /posts-by-year/2015 using positional parameters
# url ends in / so file path will have /index.html appended
distill_path ( 'posts-by-year/<int:year>/' ,
PostYear . as_view (),
name = 'blog-year' ,
distill_func = get_years ),
)
귀하의 사이트는 위의 변경 사항과 동일하게 작동합니다. 내부적으로 distill_func
및 distill_file
매개변수가 제거되고 정상적인 처리를 위해 URL이 Django로 다시 전달됩니다. 이는 애플리케이션 시작 시 한 번만 발생하므로 런타임 성능에 영향을 주지 않습니다.
경로에 /
또는 /some-static-url
과 같은 URI 매개변수가 없는 경우 원하지 않으면 distill_func
매개변수를 지정할 필요가 없습니다. 매개변수가 없는 경로의 경우 distill_func
항상 None
반환하며 이는 distill_func
의 기본 동작으로 설정됩니다.
기본 django.urls.re_path
함수를 대체하는 distill_re_path
함수도 사용할 수 있습니다. 사용법은 위와 동일합니다:
from django_distill import distill_re_path
urlpatterns = (
distill_re_path ( r'some/regex'
SomeOtherView . as_view (),
name = 'url-other-view' ,
distill_func = some_other_func ),
)
1.x 시리즈에서 이전 버전의 Django를 사용하는 경우 django.conf.urls.url
또는 django.urls.url
함수를 대신하는 distill_url
함수를 사용할 수 있습니다. 사용법은 위와 동일합니다:
from django_distill import distill_url
urlpatterns = (
distill_url ( r'some/regex'
SomeView . as_view (),
name = 'url-view' ,
distill_func = some_func ),
)
원하는 경우 distill_file
에서 표준 Python 문자열 형식을 사용하여 파일의 출력 파일 경로를 변경할 수도 있습니다. 이는 Django에서 사용하는 URL을 업데이트하지 않으므로 이를 사용하는 경우 path
패턴이 distill_file
패턴과 일치하는지 확인하세요. 그렇지 않으면 링크가 Django에서 작동하지 않을 수 있습니다. 예:
# Override file path with parameters. Values are taken from the URL pattern
urlpatterns = (
distill_path ( 'post/<int:blog_id>-<slug:blog_title>.html' ,
PostView . as_view (),
name = 'blog-post' ,
distill_func = get_all_blogposts ,
distill_file = "post/{blog_id}-{blog_title}.html"
)
django-distill
에 의해 정적 페이지로 렌더링된 모든 보기는 HTTP 200 상태 코드를 반환해야 합니다. 어떤 이유로든 HTTP 200 상태 코드를 반환하지 않는 뷰를 렌더링해야 하는 경우, 예를 들어 HTTP 404 상태 코드를 (정확하게) 반환하는 뷰가 있는 404 페이지를 정적으로 생성하려는 경우 distill_status_codes
를 사용할 수 있습니다. 뷰에 대한 선택적 인수입니다. 예를 들어:
from django_distill import distill_url
urlpatterns = (
distill_url ( r'some/regex'
SomeView . as_view (),
name = 'url-view' ,
distill_status_codes = ( 200 , 404 ),
distill_func = some_func ),
)
선택적 distill_status_codes
인수는 뷰가 오류를 발생시키지 않고 반환하도록 허용되는 정수로 상태 코드 튜플을 허용합니다. 기본적으로 이 값은 (200,)
으로 설정되어 있지만 사이트에 필요한 경우 이를 재정의할 수 있습니다.
django-distill
설치된 Django 버전이 지원하는 모든 것을 미러링하므로 향후 Django 2.x 자체에서 django.conf.urls.url
및 django.urls.url
함수의 가치가 떨어지면 distill_url
함수의 작동이 중단됩니다. distill_re_path
드롭인 대체품으로 사용할 수 있습니다. 지금 새 사이트를 구축하는 경우 distill_path
또는 distill_re_path
사용하는 것이 좋습니다.
국제화는 URL에만 지원되며 페이지 콘텐츠는 동적으로 번역할 수 없습니다. 기본적으로 사이트는 settings.py
의 LANGUAGE_CODE
값을 사용하여 생성됩니다. settings.USE_I18N
True
로 설정한 다음 settings.DISTILL_LANGUAGES
값에서 다른 언어 코드를 설정하고 i18n_patterns(...)
로 URL을 등록하면 사이트가 여러 언어로 생성됩니다. 이는 django-distill
추가하기 전에 다국어 사이트가 예상대로 작동한다고 가정합니다.
예를 들어 settings.LANGUAGE_CODE = 'en'
으로 설정하면 사이트가 하나의 언어로 생성됩니다.
대신 settings.py
에 이와 같은 내용이 있는 경우:
USE_I18N = True
DISTILL_LANGUAGES = [
'en' ,
'fr' ,
'de' ,
]
또한 urls.py
에서 i18n_patterns
다음과 같이 사용합니다.
from django . conf . urls . i18n import i18n_patterns
from django_distill import distill_path
urlpatterns = i18n_patterns (
distill_path ( 'some-file.html' ,
SomeView . as_view (),
name = 'i18n-view' ,
distill_func = some_func
)
)
그러면 보기가 /en/some-file.html
, /fr/some-file.html
및 /de/some-file.html
로 생성됩니다. 이러한 URL은 귀하의 사이트에서 이미 작동하고 번역되어야 합니다. django-distill
어떤 번역 마술도 하지 않고 단지 언어 코드 접두어를 사용하여 URL을 호출합니다.
참고 기본 제안 방법은 settings.DISTILL_LANGUAGES
를 사용하여 항목을 별도로 유지하는 것이지만 django-distill
언어 코드에 대한 settings.LANGUAGES
도 확인합니다.
django-distill
에 등록된 모든 URL 목록을 생성해야 할 수도 있습니다. 예를 들어, 수백 페이지로 구성된 정적으로 생성된 블로그가 있고 sitemap.xml
또는 기타 유사한 모든 URL 목록에 모든 URL을 쉽게 나열하려고 합니다. 사이트맵 보기를 distill_path
로 래핑한 다음 urls.py
에서 distill_func
보기를 가져오고 이를 모두 수동으로 생성하여 모든 URL 생성 로직을 복제할 수 있습니다. 당신을 위해 증류될 URL입니다.
from django_distill import distilled_urls
for uri , file_name in distilled_urls ():
# URI is the generated, complete URI for the page
print ( uri ) # for example: /blog/my-post-123/
# file_name is the actual file name on disk, this may be None or a string
print ( file_name ) # for example: /blog/my-post-123/index.html
distilled_urls()
는 urls.py
의 모든 URL이 distill_path(...)
로 로드된 후에만 URL을 반환합니다.
distill-local
명령정적으로 생성하려는 URL을 래핑한 후에는 이제 다음을 사용하여 완전히 작동하는 정적 사이트를 생성할 수 있습니다.
$ ./manage.py distill-local [optional /path/to/export/directory]
내부적으로 이것은 단순히 distill_url
에 등록된 모든 URL을 반복하고 Django 테스트 프레임워크의 일부를 사용하여 요청을 스푸핑하는 페이지를 생성합니다. 사이트 페이지가 렌더링되면 STATIC_ROOT
의 파일이 복사됩니다. 동일한 이름을 가진 기존 파일은 대상 디렉터리에서 교체되고 고아 파일은 삭제됩니다.
distill-local
다음과 같은 선택적 인수를 지원합니다.
--collectstatic
: 렌더링하기 전에 사이트에서 자동으로 collectstatic
실행합니다. 이는 추가 명령을 입력하지 않아도 되는 바로가기일 뿐입니다.
--quiet
: 확인 질문을 제외한 모든 출력을 비활성화합니다.
--force
: 모든 확인 질문에 'yes'라고 가정합니다.
--exclude-staticfiles
: 정적 파일을 전혀 복사하지 않고 Django 뷰의 출력만 렌더링합니다.
--parallel-render [number of threads]
: 여러 스레드에서 파일을 병렬로 렌더링하면 렌더링 속도가 빨라질 수 있습니다. 기본값은 1
스레드입니다.
--generate-redirects
: django.contrib.redirects
앱에 저장된 정적 리디렉션 생성을 시도합니다. /old/
에서 /new/
로 리디렉션하는 경우 이 플래그를 사용하면 /old/index.html
에서 /new/
로 정적 HTML <meta http-equiv="refresh" content="...">
스타일 리디렉션이 생성됩니다. /new/
.
참고 뷰에 Python 오류가 포함된 경우 렌더링이 실패하고 스택 추적이 터미널에 인쇄되고 렌더링 명령이 상태 코드 1로 종료됩니다.
distill-publish
명령 $ ./manage.py distill-publish [optional destination here]
하나 이상의 게시 대상을 구성한 경우(아래 참조) distill-publish
명령을 사용하여 사이트를 원격 위치에 게시할 수 있습니다.
그러면 생성된 정적 사이트에 더 이상 존재하지 않는 원격 파일을 제거하고 새 파일이나 변경된 파일을 업로드하여 전체 동기화가 수행됩니다. 사이트는 게시 시 먼저 로컬로 임시 디렉터리에 구축되며, 사이트가 게시되면 삭제됩니다. 각 파일은 PUBLIC_URL
통해 요청하여 올바르게 게시되었는지 확인됩니다.
distill-publish
다음과 같은 선택적 인수를 지원합니다.
--collectstatic
: 렌더링하기 전에 사이트에서 자동으로 collectstatic
실행합니다. 이는 추가 명령을 입력하지 않아도 되는 바로가기일 뿐입니다.
--quiet
: 확인 질문을 제외한 모든 출력을 비활성화합니다.
--force
: 모든 확인 질문에 'yes'라고 가정합니다.
--exclude-staticfiles
: 정적 파일을 전혀 복사하지 않고 Django 뷰의 출력만 렌더링합니다.
--skip-verify
: 파일이 서버에 올바르게 업로드되었는지 테스트하지 않습니다.
--ignore-remote-content
: 원격 파일 목록을 가져오지 않습니다. 이는 모든 파일이 업로드되고 기존 원격 파일은 삭제되지 않음을 의미합니다. 이는 원격 서버에 많은 파일이 있고, 대부분의 파일을 업데이트하고 싶고, 오래된 파일이 서버에 남아 있는지 여부에 관심이 없는 경우에 유용할 수 있습니다.
--parallel-publish [number of threads]
: 여러 스레드에서 파일을 병렬로 게시하면 게시 속도가 빨라질 수 있습니다. 기본값은 1
스레드입니다.
--parallel-render [number of threads]
: 여러 스레드에서 파일을 병렬로 렌더링하면 렌더링 속도가 빨라질 수 있습니다. 기본값은 1
스레드입니다.
--generate-redirects
: django.contrib.redirects
앱에 저장된 정적 리디렉션 생성을 시도합니다. /old/
에서 /new/
로 리디렉션하는 경우 이 플래그를 사용하면 /old/index.html
에서 /new/
로 정적 HTML <meta http-equiv="refresh" content="...">
스타일 리디렉션이 생성됩니다. /new/
.
이는 --force
및 --quiet
사용하는 경우 출력 디렉토리에서 사이트 내보내기의 일부가 아닌 모든 파일이 확인 없이 삭제된다는 것을 의미 합니다.
참고 뷰에 Python 오류가 포함된 경우 렌더링이 실패하고 스택 추적이 터미널에 인쇄되고 렌더링 명령이 상태 코드 1로 종료됩니다.
distill-test-publish
명령 $ ./manage.py distill-test-publish [optional destination here]
이렇게 하면 게시 대상에 연결하고 인증하고 무작위로 이름이 지정된 파일을 업로드하고 해당 파일이 PUBLIC_URL
에 있는지 확인한 다음 다시 삭제합니다. 이를 사용하여 게시 설정이 올바른지 확인하세요.
distill-test-publish
인수가 없습니다.
다음과 같은 선택적 settings.py
변수를 설정할 수 있습니다.
DISTILL_DIR : 문자열, 내보낼 기본 디렉터리:
DISTILL_DIR = '/path/to/export/directory'
DISTILL_PUBLISH : Django의 settings.DATABASES
와 같은 사전은 default
지원합니다.
DISTILL_PUBLISH = {
'default' : {
... options ...
},
'some-other-target' : {
... options ...
},
}
DISTILL_SKIP_ADMIN_DIRS : bool, 기본값은 True
입니다.
DISTILL_SKIP_ADMIN_DIRS = True
django-distill
static/admin
디렉터리의 정적 파일도 복사하도록 하려면 DISTILL_SKIP_ADMIN_DIRS
False
로 설정하세요. 일반적으로 정적으로 생성된 사이트에는 이러한 기능이 필요하지도 바람직하지도 않습니다. 기본 동작은 정적 관리 파일을 건너뛰는 것입니다.
DISTILL_SKIP_STATICFILES_DIRS : 목록, 기본값은 []
DISTILL_SKIP_STATICFILES_DIRS = [ 'some_dir' ]
DISTILL_SKIP_STATICFILES_DIRS
django-distill
정의된 static/
디렉터리의 디렉터리를 무시하도록 할 디렉터리 이름 목록으로 설정하세요. 이를 사용하여 사용하지 않는 앱의 파일이 포함된 디렉터리 복사를 무시하고 collect-static
에 의해 static/
디렉터리에 번들로 묶일 수 있습니다. 예를 들어 DISTILL_SKIP_STATICFILES_DIRS
['some_dir']
로 설정하면 정적 파일 디렉터리 static/some_dir
건너뜁니다.
DISTILL_LANGUAGES : 목록, 기본값은 []
DISTILL_LANGUAGES = [
'en' ,
'fr' ,
'de' ,
]
URL 렌더링을 시도할 언어 코드 목록으로 DISTILL_LANGUAGES
설정합니다. 자세한 내용은 "국제화" 섹션을 참조하세요.
HTTPS를 지원하는 로컬 개발 환경을 사용하는 경우 요청이 예상되는 HTTP/200 응답 코드 대신 301 리디렉션을 반환할 때 CommandError
가 발생하는 것을 방지하기 위해 settings.py
에 SECURE_SSL_REDIRECT = False
추가해야 할 수 있습니다.
django-distill
버전 3.0.0
부터는 django_distill.renderer.render_single_file
메서드를 사용하여 django_distill
사용하여 단일 파일을 디스크에 쓸 수 있습니다. 이는 단일 파일을 디스크에 기록하는 데 유용합니다. 예를 들어, django_distill
이 작성한 디렉토리에 일부 정적 파일이 있는 Django 사이트가 있지만 사이트의 나머지 부분은 일반적인 동적 Django 사이트입니다. 모델 인스턴스가 저장될 때마다 정적 HTML 파일을 업데이트할 수 있습니다. 이를 달성하기 위해 신호와 함께 단일 파일 쓰기를 사용할 수 있습니다. 예를 들어:
# in models.py
from django . db . models . signals import post_save
from django . dispatch import receiver
from django_distill . renderer import render_single_file
@ receiver ( post_save , sender = SomeBlogPostModel )
def write_blog_post_static_file_post_save ( sender , ** kwargs ):
render_single_file (
'/path/to/output/directory' ,
'blog-post-view-name' ,
blog_id = sender . pk ,
blog_slug = sender . slug
)
render_single_file
의 구문은 Django의 url.reverse
와 유사합니다. 전체 사용 인터페이스는 다음과 같습니다.
render_single_file (
'/path/to/output/directory' ,
'view-name-set-in-urls-py' ,
* view_args ,
** view_kwargs
)
예를 들어 블로그 게시물 URL이 다음과 같이 정의된 경우:
# in urls.py
distill_path ( 'post/<int:blog_id>_<slug:blog_slug>.html' ,
PostView . as_view (),
name = 'blog-post' ,
distill_func = get_all_blogposts ),
귀하의 사용법은 다음과 같습니다
render_single_file (
'/path/to/output/directory' ,
'blog-post' ,
blog_id = 123 ,
blog_slug = 'blog-title-slug' ,
)
그러면 /post/123_blog-title-slug.html
내용이 /path/to/output/directory
에 /path/to/output/directory/post/123_blog-title-slug.html
파일로 작성됩니다. 필수 하위 디렉터리(이 예에서는 /path/to/output/directory/post
)가 아직 없으면 자동으로 생성됩니다. /
로 끝나는 URL은 디스크의 실제 파일에 적합하도록 /index.html
로 저장되는 등 모든 django-distill
규칙이 적용됩니다.
또한 render_single_file
은 초기화된 Django 프로젝트로만 가져오고 사용할 수 있습니다.
백엔드 데이터베이스 엔진을 변경하여 Django에서 MySQL, SQLite, PostgreSQL 등을 사용할 수 있는 것과 마찬가지로 백엔드를 통해 지원되는 다양한 원격 대상에 사이트를 자동으로 게시할 수 있습니다. 현재 django-distill
이 지원하는 엔진은 다음과 같습니다.
django_distill.backends.amazon_s3 : Amazon S3 버킷에 게시합니다. Python 라이브러리 boto3
( $ pip install django-distill[amazon]
)이 필요합니다. 버킷이 이미 존재해야 합니다(AWS 제어판 사용). 옵션:
'some-s3-container' : {
'ENGINE' : 'django_distill.backends.amazon_s3' ,
'PUBLIC_URL' : 'http://.../' ,
'ACCESS_KEY_ID' : '...' ,
'SECRET_ACCESS_KEY' : '...' ,
'BUCKET' : '...' ,
'ENDPOINT_URL' : 'https://.../' , # Optional, set to use a different S3 endpoint
'DEFAULT_CONTENT_TYPE' : 'application/octet-stream' , # Optional
},
django_distill.backends.google_storage : Google Cloud Storage 버킷에 게시합니다. Python 라이브러리 google-api-python-client
및 google-cloud-storage
( $ pip install django-distill[google]
)가 필요합니다. 버킷은 이미 존재해야 하며 공개 정적 웹사이트를 호스팅하도록 설정되어 있어야 합니다(Google Cloud 제어판 사용). 옵션:
'some-google-storage-bucket' : {
'ENGINE' : 'django_distill.backends.google_storage' ,
'PUBLIC_URL' : 'https://storage.googleapis.com/[bucket.name.here]/' ,
'BUCKET' : '[bucket.name.here]' ,
'JSON_CREDENTIALS' : '/path/to/some/credentials.json' ,
},
JSON_CREDENTIALS
는 선택 사항입니다. 지정되지 않은 경우 Google 라이브러리는 여기에 설명된 검색 순서에 따라 다른 인증 방법을 시도합니다. https://cloud.google.com/docs/authentication/application-default-credentials(예: GOOGLE_APPLICATION_CREDENTIALS
환경 변수, 연결된 서비스 계정 등).
django_distill.backends.microsoft_azure_storage : Microsoft Azure Blob Storage 컨테이너에 게시합니다. Python 라이브러리 azure-storage-blob
( $ pip install django-distill[microsoft]
)가 필요합니다. 스토리지 계정은 이미 존재해야 하며 공개 정적 웹 사이트를 호스팅하도록 설정되어 있어야 합니다(Microsoft Azure 제어판 사용). 옵션:
'some-microsoft-storage-account' : {
'ENGINE' : 'django_distill.backends.microsoft_azure_storage' ,
'PUBLIC_URL' : 'https://[storage-account-name]...windows.net/' ,
'CONNECTION_STRING' : '...' ,
},
각 Azure Storage 계정은 django-distill
이 사이트 게시를 시도하는 매직 컨테이너 $web
사용하여 하나의 정적 웹 사이트를 지원합니다.
최소한의 테스트 모음이 있습니다. 이 저장소를 닫고, requirements.txt
에 필요한 종속성을 설치한 후 다음을 실행하여 실행할 수 있습니다.
# ./run-tests.py
올바른 형식의 합리적인 풀 요청, 문제 및 의견은 모두 환영합니다.