Saya ingin menggunakan mesin cetakan Django dalam kode (Python) saya, tetapi saya tidak sedang membangun situs web berbasis Django. Bagaimana cara saya menggunakannya tanpa memiliki file settings.py (dan lainnya) dan harus mengatur variabel lingkungan DJANGO_SETTINGS_MODULE?
Jika saya menjalankan kode berikut:
>>> import django.template
>>> from django.template import Template, Context
>>> t = Template('My name is {{ my_name }}.')
Saya mendapat:
ImportError: Settings cannot be imported, because environment variable DJANGO_SETTINGS_MODULE is undefined.
python
django
templates
django-templates
template-engine
Daryl Spitzer
sumber
sumber
settings.configure()
lagi.Sintaks Jinja2 hampir sama dengan Django dengan sedikit perbedaan, dan Anda mendapatkan mesin templat yang jauh lebih hebat, yang juga mengkompilasi templat Anda ke bytecode (CEPAT!).
Saya menggunakannya untuk membuat template, termasuk di Django itu sendiri, dan itu sangat bagus. Anda juga dapat dengan mudah menulis ekstensi jika beberapa fitur yang Anda inginkan hilang.
Berikut adalah beberapa demonstrasi pembuatan kode:
sumber
Adakah alasan khusus Anda ingin menggunakan cetakan Django? Baik Jinja dan Genshi , menurut saya, lebih unggul.
Jika Anda benar-benar menginginkannya, lihat dokumentasi Django di
settings.py
. Terutama bagian "Menggunakan pengaturan tanpa pengaturanDJANGO_SETTINGS_MODULE
". Gunakan sesuatu seperti ini:sumber
Saya juga merekomendasikan jinja2. Ada artikel bagus tentang
django
vs.jinja2
yang memberikan beberapa informasi rinci tentang mengapa Anda harus memilih nanti.sumber
{% set %}
sintaks dan persamaannya dengan mesin template Twig (PHP). Lebih baik menulis kode lintas platform selalu, tetapi perbedaan kinerja tidak terlalu penting - misalnya, python akan selalu bekerja lebih lambat daripada PHP jadi jika Anda membutuhkan kinerja, Anda lebih baik membuat situs dengan PHP, Twig dan Symfony2 atau yang lain. Sedih tapi sebenarnya.Menurut dokumentasi Jinja, dukungan Python 3 masih bersifat eksperimental . Jadi jika Anda menggunakan Python 3 dan kinerja tidak menjadi masalah, Anda dapat menggunakan mesin templat bawaan django.
Django 1.8 memperkenalkan dukungan untuk beberapa mesin cetakan yang membutuhkan perubahan cara templat diinisialisasi. Anda harus secara eksplisit mengkonfigurasi
settings.DEBUG
mana yang digunakan oleh mesin cetakan default yang disediakan oleh django. Berikut kode untuk menggunakan template tanpa menggunakan django lainnya.sumber
Tambahan untuk apa yang ditulis lain, jika Anda ingin menggunakan Template Django pada Django> 1.7, Anda harus memberikan pengaturan Anda. Configure (...) panggil variabel TEMPLATES dan panggil django.setup () seperti ini:
Kemudian Anda dapat memuat template Anda seperti biasa, dari string:
Dan jika Anda menulis variabel DIRS di .configure, dari disk:
Kesalahan Django: Tidak ada backend DjangoTemplates yang dikonfigurasi
http://django.readthedocs.io/en/latest/releases/1.7.html#standalone-scripts
sumber
Saya akan mengatakan Jinja juga. Ini jelas lebih bertenaga daripada Mesin Templating Django dan berdiri sendiri .
Jika ini adalah steker eksternal ke aplikasi Django yang ada, Anda dapat membuat perintah kustom dan menggunakan mesin template dalam lingkungan proyek Anda. Seperti ini;
Tapi saya rasa tidak ada gunanya hanya menggunakan Mesin Templating Django daripada Jinja.
sumber
Terima kasih atas bantuannya. Ini satu tambahan lagi. Kasus ketika Anda perlu menggunakan tag template kustom.
Misalkan Anda memiliki tag template penting ini di module read.py
Ini adalah file template html "temp.html":
Terakhir, berikut adalah skrip Python yang akan mengikat semuanya
Hasilnya adalah
sumber
django.template.base.add_to_builtins("read")
menimbulkanValueError
untuk saya.TemplateDoesNotExist
kesalahan Saya menggunakan django 1.10.1Menemukan ini:
http://snippets.dzone.com/posts/show/3339
sumber
Jangan. Gunakan StringTemplate sebagai gantinya - tidak ada alasan untuk mempertimbangkan mesin template lain setelah Anda mengetahuinya.
sumber
Saya menggemakan pernyataan di atas. Jinja 2 adalah superset dari templat Django yang cukup bagus untuk penggunaan umum. Saya pikir mereka sedang bekerja untuk membuat cetakan Django sedikit lebih sedikit digabungkan dengan settings.py, tetapi Jinja harus melakukannya dengan baik untuk Anda.
sumber
Saat menjalankan
manage.py
shell:sumber
Google
AppEngine
menggunakan mesin template Django, pernahkah Anda melihat bagaimana mereka melakukannya? Anda mungkin bisa menggunakan itu.sumber