জ্যাঙ্গো প্রকল্পে টেমপ্লেট স্থাপনের জন্য সেরা অবস্থানটি কী?
উত্তর:
জাজানো বই, চতুর্থ অধ্যায় থেকে :
আপনি যদি আপনার টেমপ্লেটগুলি রাখার জন্য কোনও সুস্পষ্ট জায়গার কথা ভাবতে না পারেন, তবে আমরা আপনার জাজানো প্রকল্পের মধ্যে একটি টেম্পলেট ডিরেক্টরি তৈরি করার পরামর্শ দিই (অর্থাত্, আপনি যদি আমাদের উদাহরণগুলি অনুসরণ করে চলেছেন তবে অধ্যায় 2 এ আপনি যে মাইসাইট ডিরেক্টরিটি তৈরি করেছেন তার মধ্যে)।
এটি হ'ল আমি যা করি এবং আমার পক্ষে দুর্দান্ত কাজ করে।
আমার ডিরেক্টরি কাঠামোটি এরকম কিছু দেখাচ্ছে:
/mediaমূল প্রকল্প কোডের (যেমন পাইথন কোড)
/templatesজন্য আমার টেমপ্লেটগুলির
/projectnameজন্য আমার সমস্ত সিএসএস / জেএস / চিত্র ইত্যাদির জন্য
<PROJECT>/<APP>/templates/<APP>/template.htmlঅ্যাপটিকে অন্য কোথাও পুনরায় ব্যবহারযোগ্য করে তুলতে সহায়তা করার জন্য অ্যাপ-নির্দিষ্ট টেম্পলেটগুলির জন্য স্থাপন করা হয়েছে in
সাধারণ "গ্লোবাল" টেম্পলেটগুলির জন্য আমি সেগুলিতে রেখেছি <PROJECT>/templates/template.html
<APP>s এ <PROJECT>/<APP>/templates/<APP>/template.html?
TEMPLATE_DIRS = (os.path.join(BASE_DIR, "templates"))
TEMPLATE_DIRSএখন অবহিত করা হয়েছে - আপনার পরিবর্তে যুক্ত DIRS=[os.path.join(BASE_DIR, "templates")]করা উচিত TEMPLATES- দেখুন স্ট্যাকওভারফ্লো.com
ডোমিনিক এবং ডিফল্ট থেকে অনুসরণ করা,
আমরা আমাদের জ্যাঙ্গো প্রকল্প এবং অ্যাপ্লিকেশনগুলিকে আমাদের বিভিন্ন পরিবেশে স্থাপন করতে প্যাকেজ করতে একটি সেটআপলগুলি উত্স বিতরণ (এসডিস্ট) ব্যবহার করি।
আমরা দেখতে পেয়েছি যে টেমপ্লেট এবং স্ট্যাটিক ফাইলগুলি জাঙ্গো অ্যাপ্লিকেশন ডিরেক্টরিগুলির অধীনে থাকা দরকার যাতে সেগুলি সেটআপলগুলিতে প্যাকেজ করা যায়।
উদাহরণস্বরূপ, আমাদের টেম্পলেট এবং স্ট্যাটিক পাথগুলি দেখতে দেখতে:
PROJECT/APP/templates/APP/template.html
PROJECT/APP/static/APP/my.js
এটি কাজ করার জন্য, MANIFEST.in এ পরিবর্তন করতে হবে (দেখুন http://docs.python.org/distutils/sourcedist.html#the-manifest-in-template )
MANIFEST.in এর একটি উদাহরণ:
include setup.py
recursive-include PROJECT *.txt *.html *.js
recursive-include PROJECT *.css *.js *.png *.gif *.bmp *.ico *.jpg *.jpeg
এছাড়াও, আপনাকে আপনার জ্যাঙ্গো সেটিংস ফাইলে নিশ্চিত করতে হবে যে অ্যাপ_ডাইরেক্টরিগুলি লোডার আপনার TEMPLATE_LOADERS এ আছে। আমি মনে করি এটি ডিফল্টভাবে জাজানো ১.৪ এ রয়েছে।
জ্যাঙ্গো সেটিংসের টেম্পলেট লোডারগুলির একটি উদাহরণ:
# List of callables that know how to import templates from various sources.
TEMPLATE_LOADERS = (
'django.template.loaders.filesystem.Loader',
'django.template.loaders.app_directories.Loader',
)
কেবলমাত্র যদি আপনি ভাবছেন যে কেবল আরএসসিএনসি ফাইলগুলি কপি করার পরিবর্তে আমরা কেন এসডিস্ট ব্যবহার করি; এটি আমাদের কনফিগারেশন পরিচালন কার্যপ্রবাহের অংশ যেখানে আমাদের একক বিল্ড টারবল রয়েছে যা পরীক্ষার, গ্রহণযোগ্যতা এবং উত্পাদন পরিবেশে অপরিবর্তিত পিআইপি সহ স্থাপন করা হয়।
/static/টেমপ্লেট এবং মডুলার অ্যাপ্লিকেশনগুলির কথা চিন্তা করার সময় আপনার বিন্যাস পরিকল্পনায় অন্তর্ভুক্ত করতে +1 স্মার্ট । আপনি অন্য সেরা অনুশীলনের কথা উল্লেখ করতে পারেন, একইভাবে cssবলা ফোল্ডারে ফাইলগুলি রেখে এবং সম্ভবত বা ঠিক । static/app/cssjsjpg/static/app/images
ডিজেঙ্গো 1.11
টেমপ্লেট ফোল্ডার যুক্ত করুন যেখানে ম্যানেজ.পি রয়েছে, এটি আপনার বেস ডিরেক্টরি। আপনার সেটিংস.পাইতে নিম্নলিখিত হিসাবে টেপলেটগুলির DIRS পরিবর্তন করুন
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates')],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
কোডটি ব্যবহার করে এখন টেমপ্লেটটি ব্যবহার করতে,
def home(request):
return render(request,"index.html",{})
view.py এ। এটি django 1.11 এর জন্য সম্পূর্ণ জরিমানা করে
আমি বুঝতে পারলাম TEMPLATE_DIRSএকটি পরম পথ প্রয়োজন requires এবং আমি আমার কোডে নিখুঁত পাথ পছন্দ করি না। সুতরাং এটি আমার পক্ষে ভাল কাজ করছে settings.py:
import os
TEMPLATE_DIRS = (
os.path.join(os.path.dirname(os.path.realpath(__file__)),
"../APPNAME/templates")
)
BASE_DIR, তাই আপনি এই প্রক্রিয়া সহজ করতে পারেন:os.path.join(BASE_DIR, '../APPNAME/templates')
জ্যাঙ্গো 1.10
TEMPLATE_DIRS অবচয় করা হয়।
এখন আমাদের ব্যবহার করা দরকার TEMPLATE, জ্যাঙ্গো ১.৮ এর মতো করে চালু করা :
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [],
'APP_DIRS': True,
'OPTIONS': {
# ... some options here ...
},
},
]
একবার আপনি TEMPLATES সংজ্ঞা দিলে, আপনি নিরাপদে ALLOWED_INCLUDE_ROOTS, TEMPLATE_CONTEXT_PROCESSORS, TEMPLATE_DEBUG, TEMPLATE_DIRS, TEMPLATE_LOADERS, এবং TEMPLATE_STRING_IF_INVALID মুছে ফেলতে পারবেন।
সেরা অবস্থান সম্পর্কে, জ্যাঙ্গো এই জাতীয় টেম্পলেট খুঁজছেন:
আরও তথ্য: https://docs.djangoproject.com/en/1.10/topics/templates/#configration
পূর্ববর্তী সমাধানটি আমার ক্ষেত্রে কার্যকর হয়নি। আমি ব্যবহার করতাম:
TEMPLATE_DIRS = [ os.path.join(os.path.dirname(os.path.realpath(__file__)),"../myapp/templates") ]
TEMPLATE_DIRSএখন অবচয় করা হয়েছে।
BASE_DIR, তাই আপনি এই প্রক্রিয়া সহজ করতে পারেন:os.path.join(BASE_DIR, '../myapp/templates')
আপনি জ্যাঙ্গো-ডিবিটেমপ্লেটগুলি ব্যবহার করে আপনার টেমপ্লেটগুলি একটি ডাটাবেসে রাখার বিষয়টি বিবেচনা করতে পারেন । এটি ক্যাশিংয়ের জন্য সেটআপ এবং জ্যাঙ্গো-রিভার্সন অ্যাপ্লিকেশন যা আপনাকে প্রায়শই আপনার টেমপ্লেটের পুরানো সংস্করণ রাখতে সহায়তা করে।
এটি বেশ ভালভাবে কাজ করে তবে আমি ফাইল সিস্টেমের পাশ থেকে / আমদানি / সিঙ্কের ক্ষেত্রে আরও কিছুটা নমনীয়তা পছন্দ করতাম।
[সম্পাদনা করুন: 20 আগস্ট 2018 - এই সংগ্রহস্থলটি উপলভ্য নয়, একই নামের একটি https://github.com/jazzband/django-dbtemplates এ পাওয়া যায় এবং 8 মাস আগে আপডেট হয়েছিল। আমি আর জ্যাঙ্গোকে কোনও অর্থবহ উপায়ে ব্যবহার করি না, সুতরাং এটির জন্য কোনও প্রমাণ দেওয়া যায় না]]