django-distill
sekarang mempunyai situs web. Baca selengkapnya di:
django-distill
adalah generator dan penerbit situs statis konfigurasi minimal untuk Django. Kebanyakan versi Django didukung, namun versi terkini disarankan termasuk terbitan Django 3.x. django-distill
pada rilis 1.7 hanya mendukung Python 3. Dukungan Python 2 telah dihilangkan. Jika Anda memerlukan dukungan Python 2 silakan sematkan django-distill
ke versi 1.6 di persyaratan.txt atau Pipfile Anda. Python 3.6 atau lebih tinggi disarankan.
django-distill
memperluas situs Django yang ada dengan kemampuan untuk mengekspor situs statis yang berfungsi penuh. Cocok untuk situs seperti blog yang sebagian besar front-endnya statis tetapi Anda tetap ingin menggunakan CMS untuk mengelola kontennya.
django-distill
mengulangi URL dalam proyek Django Anda menggunakan fungsi yang dapat diubah dengan mudah untuk menghasilkan parameter untuk laman apa pun yang ingin Anda simpan sebagai HTML statis. File statis ini dapat diunggah secara otomatis ke kontainer jarak jauh bergaya bucket seperti Amazon S3, Googe Cloud Files, Microsoft Azure Storage, atau, ditulis ke direktori lokal sebagai versi statis lokal proyek Anda yang berfungsi penuh. Pembuatan situs, atau proses distilasi, dapat dengan mudah diintegrasikan ke dalam alur kerja CI/CD untuk menerapkan situs statis secara otomatis saat dilakukan. django-distill
dapat didefinisikan sebagai perpanjangan ke Django untuk membuat proyek Django kompatibel dengan arsitektur situs bergaya "Jamstack".
django-distill
dihubungkan langsung ke kerangka Django yang ada tanpa perlu menulis penyaji khusus atau kode verbose lainnya. Anda juga dapat mengintegrasikan django-distill
dengan situs dinamis yang ada dan hanya menghasilkan halaman statis untuk subbagian kecil halaman daripada keseluruhan situs.
Untuk file statis di CDN, Anda dapat menggunakan pustaka 'penghancur cache' berikut untuk memungkinkan pembaruan media statis yang cepat saat melakukan perubahan:
? meeb/Django-cachekiller
Ada contoh situs lengkap yang membuat blog statis dan menggunakan django-distill
dengan django-cachekiller
melalui penerapan berkelanjutan di Netlify yang tersedia di sini:
? meeb/django-distilasi-contoh
Instal dari pip:
$ pip install django-distill
Tambahkan django_distill
ke INSTALLED_APPS
Anda di settings.py
:
INSTALLED_APPS = [
# ... other apps here ...
'django_distill' ,
]
Itu saja.
django-distill
menghasilkan halaman statis dan oleh karena itu hanya tampilan yang mengizinkan permintaan GET
yang mengembalikan kode status HTTP 200
yang didukung.
Diasumsikan Anda menggunakan parameter URI seperti /blog/123-abc
dan bukan parameter querystring seperti /blog?post_id=123&title=abc
. Parameter string kueri tidak masuk akal untuk pembuatan halaman statis karena alasan yang jelas.
File media statis seperti gambar dan style sheet disalin dari direktori media statis yang ditentukan dalam STATIC_ROOT
. Ini berarti Anda ingin menjalankan ./manage.py collectstatic
sebelum menjalankan ./manage.py distill-local
jika Anda telah membuat perubahan pada media statis. django-distill
tidak merangkai permintaan ini berdasarkan desain, namun Anda dapat mengaktifkannya dengan argumen --collectstatic
.
Dengan asumsi Anda mempunyai proyek Django, edit urls.py
untuk menyertakan fungsi distill_path
yang menggantikan fungsi path
standar Django dan mendukung argumen kata kunci baru distill_func
dan distill_file
.
Argumen distill_func
harus dilengkapi dengan fungsi atau kelas callable yang mengembalikan iterable atau None
.
Argumen distill_file
sepenuhnya opsional dan memungkinkan Anda mengganti URL yang seharusnya dihasilkan dari kebalikan dari regex URL. Ini memungkinkan Anda mengganti nama URL seperti /example
menjadi nama lain seperti example.html
. Pada v0.8, setiap URI yang diakhiri dengan garis miring /
secara otomatis diubah menjadi /index.html
. Anda bisa menggunakan parameter string format di distill_file
untuk menyesuaikan nama file, nilai arg dari URL akan diganti, misalnya {}
untuk argumen posisi atau {param_name}
untuk argumen bernama.
Contoh penyiapan penyulingan untuk aplikasi blog teoretis adalah:
# 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 ),
)
Situs Anda akan tetap berfungsi sama dengan perubahan di atas. Secara internal parameter distill_func
dan distill_file
dihapus dan URL diteruskan kembali ke Django untuk pemrosesan normal. Hal ini tidak berdampak pada kinerja waktu proses karena ini hanya terjadi sekali saat memulai aplikasi.
Jika jalur Anda tidak memiliki parameter URI, seperti /
atau /some-static-url
Anda tidak perlu menentukan parameter distill_func
jika tidak mau. Sedangkan untuk jalur tanpa parameter, distill_func
selalu mengembalikan None
, ini ditetapkan sebagai perilaku default untuk distill_func
s.
Anda dapat menggunakan fungsi distill_re_path
juga, yang menggantikan fungsi django.urls.re_path
default. Penggunaannya identik dengan yang di atas:
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 ),
)
Jika anda menggunakan versi lebih lama dari Django di seri 1.x anda dapat menggunakan fungsi distill_url
yang menggantikan fungsi django.conf.urls.url
atau django.urls.url
. Penggunaannya identik dengan yang di atas:
from django_distill import distill_url
urlpatterns = (
distill_url ( r'some/regex'
SomeView . as_view (),
name = 'url-view' ,
distill_func = some_func ),
)
Anda juga dapat menggunakan pemformatan string Python standar di distill_file
untuk memungkinkan Anda mengubah jalur file keluaran untuk suatu file jika Anda mau. Catatan ini tidak memperbarui URL yang digunakan oleh Django jadi jika Anda menggunakan ini pastikan pola path
Anda cocok dengan pola distill_file
atau tautan Anda mungkin tidak berfungsi di Django. Contoh:
# 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"
)
Semua tampilan yang dirender oleh django-distill
ke dalam halaman statis harus mengembalikan kode status HTTP 200. Jika karena alasan apa pun Anda perlu merender tampilan yang tidak mengembalikan kode status HTTP 200, misalnya Anda juga ingin membuat halaman 404 secara statis yang memiliki tampilan yang (dengan benar) mengembalikan kode status HTTP 404, Anda dapat menggunakan distill_status_codes
argumen opsional untuk suatu tampilan. Misalnya:
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 ),
)
Argumen opsional distill_status_codes
menerima serangkaian kode status sebagai bilangan bulat yang diizinkan agar tampilan kembali tanpa menimbulkan kesalahan. Secara default ini diatur ke (200,)
tetapi Anda dapat menggantinya jika perlu untuk situs Anda.
django-distill
akan mencerminkan apa pun versi Django yang terinstal yang Anda dukung, oleh karena itu pada titik tertentu fungsi distill_url
akan berhenti bekerja di masa depan ketika Django 2.x sendiri mendepresiasi fungsi django.conf.urls.url
dan django.urls.url
. Anda dapat menggunakan distill_re_path
sebagai pengganti drop-in. Disarankan untuk menggunakan distill_path
atau distill_re_path
jika Anda sedang membangun situs baru sekarang.
Internasionalisasi hanya didukung untuk URL, konten halaman tidak dapat diterjemahkan secara dinamis. Secara default, situs Anda akan dibuat menggunakan nilai LANGUAGE_CODE
di settings.py
Anda. Jika Anda juga menyetel settings.USE_I18N
ke True
lalu menyetel kode bahasa lain di nilai settings.DISTILL_LANGUAGES
Anda dan mendaftarkan URL dengan i18n_patterns(...)
maka situs Anda akan dibuat dalam berbagai bahasa. Ini mengasumsikan situs multi-bahasa Anda berfungsi seperti yang diharapkan sebelum menambahkan django-distill
.
Misalnya jika Anda menyetel settings.LANGUAGE_CODE = 'en'
situs Anda akan dibuat dalam satu bahasa.
Jika Anda memiliki sesuatu seperti ini di settings.py
Anda:
USE_I18N = True
DISTILL_LANGUAGES = [
'en' ,
'fr' ,
'de' ,
]
Sementara juga menggunakan i18n_patterns
di urls.py
Anda seperti:
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
)
)
Kemudian tampilan Anda akan dihasilkan sebagai /en/some-file.html
, /fr/some-file.html
dan /de/some-file.html
. URL ini seharusnya sudah berfungsi (dan diterjemahkan) oleh situs Anda. django-distill
tidak melakukan keajaiban terjemahan apa pun, ia hanya memanggil URL dengan awalan kode bahasa.
Catatan Meskipun metode default yang disarankan adalah dengan menggunakan settings.DISTILL_LANGUAGES
untuk memisahkan semuanya, django-distill
juga akan memeriksa settings.LANGUAGES
untuk kode bahasa.
Anda mungkin perlu membuat daftar semua URL yang terdaftar dengan django-distill
. Misalnya, Anda memiliki blog yang dibuat secara statis dengan beberapa ratus halaman dan Anda ingin mencantumkan semua URL dengan mudah di peta sitemap.xml
atau daftar semua URL serupa lainnya. Anda dapat menggabungkan tampilan peta situs Anda di distill_path
lalu mereplikasi semua logika pembuatan URL Anda dengan mengimpor tampilan distill_func
dari urls.py
Anda dan membuat semuanya secara manual, tetapi karena ini cukup merepotkan, ada pembantu bawaan untuk menghasilkan semua tampilan peta situs Anda. URL yang akan disaring untuk Anda.
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
Perhatikan bahwa distilled_urls()
hanya akan mengembalikan URL setelah semua URL Anda di urls.py
dimuat dengan distill_path(...)
.
distill-local
Setelah Anda menggabungkan URL yang ingin Anda hasilkan secara statis, Anda sekarang dapat membuat situs statis yang berfungsi lengkap dengan:
$ ./manage.py distill-local [optional /path/to/export/directory]
Di bawah tenda ini hanya mengulangi semua URL yang terdaftar dengan distill_url
dan menghasilkan halaman untuk mereka menggunakan bagian kerangka pengujian Django untuk memalsukan permintaan. Setelah halaman situs dirender maka file dari STATIC_ROOT
disalin. File yang ada dengan nama yang sama akan diganti di direktori target dan file yatim piatu akan dihapus.
distill-local
mendukung argumen opsional berikut:
--collectstatic
: Secara otomatis menjalankan collectstatic
di situs Anda sebelum rendering, ini hanyalah jalan pintas untuk menyelamatkan Anda mengetik perintah tambahan.
--quiet
: Nonaktifkan semua output selain menanyakan pertanyaan konfirmasi.
--force
: Asumsikan 'ya' untuk semua pertanyaan konfirmasi.
--exclude-staticfiles
: Jangan menyalin berkas statis apa pun sama sekali, hanya render keluaran dari tampilan Django.
--parallel-render [number of threads]
: Merender file secara paralel pada beberapa thread, ini dapat mempercepat rendering. Defaultnya adalah 1
utas.
--generate-redirects
: Mencoba menghasilkan pengalihan statis yang disimpan di aplikasi django.contrib.redirects
. Jika Anda memiliki pengalihan dari /old/
ke /new/
menggunakan tanda ini akan membuat pengalihan gaya HTML statis <meta http-equiv="refresh" content="...">
di /old/index.html
ke /new/
.
Catatan Jika salah satu tampilan Anda mengandung kesalahan Python maka rendering akan gagal kemudian pelacakan tumpukan akan dicetak ke terminal dan perintah rendering akan keluar dengan kode status 1.
distill-publish
$ ./manage.py distill-publish [optional destination here]
Jika Anda telah mengonfigurasi setidaknya satu tujuan penerbitan (lihat di bawah), Anda dapat menggunakan perintah distill-publish
untuk mempublikasikan situs ke lokasi yang jauh.
Ini akan melakukan sinkronisasi penuh, menghapus semua file jarak jauh yang tidak lagi ada di situs statis yang dihasilkan dan mengunggah file baru atau yang diubah. Situs ini akan dibangun ke dalam direktori sementara secara lokal terlebih dahulu saat dipublikasikan, yang akan dihapus setelah situs dipublikasikan. Setiap file akan diperiksa apakah telah dipublikasikan dengan benar dengan memintanya melalui PUBLIC_URL
.
distill-publish
mendukung argumen opsional berikut:
--collectstatic
: Secara otomatis menjalankan collectstatic
di situs Anda sebelum rendering, ini hanyalah jalan pintas untuk menyelamatkan Anda mengetik perintah tambahan.
--quiet
: Nonaktifkan semua output selain menanyakan pertanyaan konfirmasi.
--force
: Asumsikan 'ya' untuk semua pertanyaan konfirmasi.
--exclude-staticfiles
: Jangan menyalin berkas statis apa pun sama sekali, hanya render keluaran dari tampilan Django.
--skip-verify
: Jangan menguji apakah file diunggah dengan benar di server.
--ignore-remote-content
: Jangan mengambil daftar file jarak jauh. Artinya semua file akan diunggah, dan tidak ada file jarak jauh yang ada yang akan dihapus. Ini bisa berguna jika Anda memiliki banyak file di server jauh, dan Anda tahu bahwa Anda ingin memperbarui sebagian besar file tersebut, dan Anda tidak peduli jika file lama tetap ada di server.
--parallel-publish [number of threads]
: Publikasikan file secara paralel di beberapa thread, ini dapat mempercepat penerbitan. Defaultnya adalah 1
utas.
--parallel-render [number of threads]
: Merender file secara paralel pada beberapa thread, ini dapat mempercepat rendering. Defaultnya adalah 1
utas.
--generate-redirects
: Mencoba menghasilkan pengalihan statis yang disimpan di aplikasi django.contrib.redirects
. Jika Anda memiliki pengalihan dari /old/
ke /new/
menggunakan tanda ini akan membuat pengalihan gaya HTML statis <meta http-equiv="refresh" content="...">
di /old/index.html
ke /new/
.
Perhatikan bahwa ini berarti jika Anda menggunakan --force
dan --quiet
direktori keluaran akan menghapus semua file yang bukan bagian dari ekspor situs tanpa konfirmasi apa pun.
Catatan Jika salah satu tampilan Anda mengandung kesalahan Python maka rendering akan gagal kemudian pelacakan tumpukan akan dicetak ke terminal dan perintah rendering akan keluar dengan kode status 1.
distill-test-publish
$ ./manage.py distill-test-publish [optional destination here]
Ini akan menghubungkan ke target penerbitan Anda, mengautentikasinya, mengunggah file dengan nama acak, memverifikasi keberadaannya di PUBLIC_URL
dan kemudian menghapusnya lagi. Gunakan ini untuk memeriksa apakah pengaturan penerbitan Anda sudah benar.
distill-test-publish
tidak memiliki argumen.
Anda dapat mengatur variabel settings.py
opsional berikut:
DISTILL_DIR : string, direktori default untuk diekspor ke:
DISTILL_DIR = '/path/to/export/directory'
DISTILL_PUBLISH : kamus, seperti settings.DATABASES
Django, mendukung default
:
DISTILL_PUBLISH = {
'default' : {
... options ...
},
'some-other-target' : {
... options ...
},
}
DISTILL_SKIP_ADMIN_DIRS : bool, defaultnya adalah True
DISTILL_SKIP_ADMIN_DIRS = True
Setel DISTILL_SKIP_ADMIN_DIRS
ke False
jika Anda ingin django-distill
juga menyalin berkas statis di direktori static/admin
. Biasanya, ini tidak diperlukan atau diinginkan untuk situs yang dibuat secara statis. Perilaku defaultnya adalah melewatkan file admin statis.
DISTILL_SKIP_STATICFILES_DIRS : daftar, defaultnya adalah []
DISTILL_SKIP_STATICFILES_DIRS = [ 'some_dir' ]
Setel DISTILL_SKIP_STATICFILES_DIRS
ke daftar nama direktori yang Anda inginkan agar django-distill
mengabaikan direktori dalam direktori static/
yang Anda tentukan. Anda dapat menggunakan ini untuk mengabaikan penyalinan direktori yang berisi file dari aplikasi yang tidak Anda gunakan yang digabungkan ke dalam direktori static/
Anda dengan collect-static
. Misalnya jika Anda menyetel DISTILL_SKIP_STATICFILES_DIRS
ke ['some_dir']
direktori file statis static/some_dir
akan dilewati.
DISTILL_LANGUAGES : daftar, defaultnya adalah []
DISTILL_LANGUAGES = [
'en' ,
'fr' ,
'de' ,
]
Setel DISTILL_LANGUAGES
ke daftar kode bahasa untuk mencoba merender URL. Lihat bagian "Internasionalisasi" untuk lebih jelasnya.
Jika Anda menggunakan lingkungan pengembangan lokal yang memiliki dukungan HTTPS, Anda mungkin perlu menambahkan SECURE_SSL_REDIRECT = False
ke settings.py
Anda untuk mencegah CommandError
dimunculkan ketika permintaan mengembalikan pengalihan 301 alih-alih kode respons HTTP/200 yang diharapkan.
Pada django-distill
versi 3.0.0
Anda dapat menggunakan metode django_distill.renderer.render_single_file
untuk menulis satu berkas ke disk menggunakan django_distill
. Ini berguna untuk menulis berkas tunggal ke disk, misalnya, Anda mempunyai situs Django yang mempunyai beberapa berkas statis dalam direktori yang ditulis oleh django_distill
tetapi sisa situsnya adalah situs Django dinamis normal. Anda dapat memperbarui file HTML statis setiap kali contoh model disimpan. Anda dapat menggunakan penulisan file tunggal dengan sinyal untuk mencapai hal ini. Misalnya:
# 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
)
Sintaks untuk render_single_file
mirip dengan url.reverse
Django. Antarmuka penggunaan penuh adalah:
render_single_file (
'/path/to/output/directory' ,
'view-name-set-in-urls-py' ,
* view_args ,
** view_kwargs
)
Misalnya, jika Anda memiliki URL postingan blog yang didefinisikan sebagai:
# in urls.py
distill_path ( 'post/<int:blog_id>_<slug:blog_slug>.html' ,
PostView . as_view (),
name = 'blog-post' ,
distill_func = get_all_blogposts ),
Penggunaan Anda adalah:
render_single_file (
'/path/to/output/directory' ,
'blog-post' ,
blog_id = 123 ,
blog_slug = 'blog-title-slug' ,
)
yang akan menuliskan konten /post/123_blog-title-slug.html
ke dalam /path/to/output/directory
sebagai file /path/to/output/directory/post/123_blog-title-slug.html
. Perhatikan bahwa setiap subdirektori yang diperlukan ( /path/to/output/directory/post
dalam contoh ini) akan dibuat secara otomatis jika belum ada. Semua aturan django-distill
berlaku, seperti URL yang diakhiri dengan /
akan disimpan sebagai /index.html
agar masuk akal untuk berkas fisik pada disk.
Perhatikan juga bahwa render_single_file
hanya dapat diimpor dan digunakan ke dalam proyek Django yang diinisialisasi.
Anda dapat secara otomatis mempublikasikan situs ke berbagai target jarak jauh yang didukung melalui backend seperti bagaimana Anda dapat menggunakan MySQL, SQLite, PostgreSQL dll. dengan Django dengan mengubah mesin database backend. Saat ini mesin yang didukung oleh django-distill
adalah:
django_distill.backends.amazon_s3 : Publikasikan ke bucket Amazon S3. Membutuhkan perpustakaan Python boto3
( $ pip install django-distill[amazon]
). Bucket harus sudah ada (gunakan panel kontrol AWS). Pilihan:
'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 : Publikasikan ke keranjang Google Cloud Storage. Membutuhkan perpustakaan Python google-api-python-client
dan google-cloud-storage
( $ pip install django-distill[google]
). Bucket harus sudah ada dan disiapkan untuk menghosting situs statis publik (gunakan panel kontrol Google Cloud). Pilihan:
'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' ,
},
Perhatikan bahwa JSON_CREDENTIALS
bersifat opsional; jika tidak ditentukan, perpustakaan Google akan mencoba metode autentikasi lainnya, dalam urutan pencarian yang dijelaskan di sini: https://cloud.google.com/docs/authentication/application-default-credentials (misalnya variabel lingkungan GOOGLE_APPLICATION_CREDENTIALS
, layanan terlampir akun, dll).
django_distill.backends.microsoft_azure_storage : Publikasikan ke kontainer Microsoft Azure Blob Storage. Memerlukan pustaka Python azure-storage-blob
( $ pip install django-distill[microsoft]
). Akun penyimpanan harus sudah ada dan disiapkan untuk menghosting situs web statis publik (gunakan panel kontrol Microsoft Azure). Pilihan:
'some-microsoft-storage-account' : {
'ENGINE' : 'django_distill.backends.microsoft_azure_storage' ,
'PUBLIC_URL' : 'https://[storage-account-name]...windows.net/' ,
'CONNECTION_STRING' : '...' ,
},
Perhatikan bahwa setiap akun penyimpanan Azure mendukung satu situs web statis menggunakan wadah ajaib $web
yang mana django-distill
akan mencoba menerbitkan situs Anda.
Ada rangkaian pengujian minimal, Anda dapat menjalankannya dengan menutup repositori ini, menginstal dependensi yang diperlukan di requirements.txt
lalu menjalankan:
# ./run-tests.py
Semua permintaan penarikan, masalah, dan komentar yang diformat dengan benar dan masuk akal dipersilakan.