আমার ~/projects/
ডিরেক্টরিতে দুটি ধরণের জ্যাঙ্গো "প্রকল্প" রয়েছে যা উভয়েরই কিছুটা আলাদা কাঠামো রয়েছে:
- একা একা ওয়েবসাইট
- প্লাগেবল অ্যাপ্লিকেশন
একা একা ওয়েবসাইট
বেশিরভাগ বেসরকারী প্রকল্প, কিন্তু হতে হবে না। এটি সাধারণত এটির মতো দেখাচ্ছে:
~/projects/project_name/
docs/ # documentation
scripts/
manage.py # installed to PATH via setup.py
project_name/ # project dir (the one which django-admin.py creates)
apps/ # project-specific applications
accounts/ # most frequent app, with custom user model
__init__.py
...
settings/ # settings for different environments, see below
__init__.py
production.py
development.py
...
__init__.py # contains project version
urls.py
wsgi.py
static/ # site-specific static files
templates/ # site-specific templates
tests/ # site-specific tests (mostly in-browser ones)
tmp/ # excluded from git
setup.py
requirements.txt
requirements_dev.txt
pytest.ini
...
সেটিংস
প্রধান সেটিংস হ'ল প্রোডাকশনগুলি। অন্যান্য ফাইল (যেমন। staging.py
,
development.py
) production.py
কেবলমাত্র প্রয়োজনীয় ভেরিয়েবলগুলি থেকে সবকিছু আমদানি করে ওভাররাইড করে।
প্রতিটি পরিবেশের জন্য পৃথক সেটিংস ফাইল রয়েছে, যেমন। উত্পাদন, উন্নয়ন। আমার কয়েকটি প্রকল্পও রয়েছে (টেস্ট রানারের জন্য), মঞ্চায়ন (চূড়ান্ত স্থাপনার আগে একটি চেক হিসাবে) এবং হিরকু (হিরকুতে মোতায়েনের জন্য) সেটিংস।
আবশ্যকতা
আমি বরং সেটআপ.পিতে সরাসরি প্রয়োজনীয়তা নির্দিষ্ট করি। কেবল তারাই আমার উন্নয়ন / পরীক্ষা পরিবেশ আমি আছে জন্য প্রয়োজন বোধ করা requirements_dev.txt
।
কিছু পরিষেবা (যেমন হিরকু) requirements.txt
এর মূল ডিরেক্টরিতে থাকা দরকার।
setup.py
প্রকল্প ব্যবহার করে স্থাপন করার সময় দরকারী setuptools
। এটি এতে যোগ manage.py
করে PATH
, তাই আমি manage.py
সরাসরি (যে কোনও জায়গায়) চালাতে পারি ।
প্রকল্প-নির্দিষ্ট অ্যাপ্লিকেশন
আমি এই অ্যাপ্লিকেশনগুলিকে project_name/apps/
ডিরেক্টরিতে রেখেছি এবং এগুলি আপেক্ষিক আমদানি ব্যবহার করে আমদানি করতাম।
টেমপ্লেট / স্থির / স্থানীয় / ফাইল পরীক্ষা করে
আমি এই টেম্পলেটগুলি এবং স্ট্যাটিক ফাইলগুলিকে গ্লোবাল টেম্পলেট / স্ট্যাটিক ডিরেক্টরিতে রেখেছি, প্রতিটি অ্যাপ্লিকেশনের অভ্যন্তরে নয়। এই ফাইলগুলি সাধারণত লোকেরা সম্পাদনা করে, যারা প্রজেক্ট কোড কাঠামো বা পাইথনকে মোটেই পরোয়া করে না। আপনি যদি পুরো স্ট্যাক বিকাশকারী একা বা একটি ছোট দলে কাজ করছেন তবে আপনি প্রতি অ্যাপ্লিকেশন টেম্পলেট / স্ট্যাটিক ডিরেক্টরি তৈরি করতে পারেন। এটি সত্যিই কেবল স্বাদের বিষয়।
একই লোকেলের জন্য প্রযোজ্য, যদিও এটি কখনও কখনও পৃথক স্থানীয় ডিরেক্টরি তৈরি করা সুবিধাজনক।
পরীক্ষাগুলি প্রতিটি অ্যাপ্লিকেশনের ভিতরে রাখার জন্য সাধারণত আরও ভাল তবে সাধারণত অনেকগুলি সংহতকরণ / কার্যকরী পরীক্ষা থাকে যা আরও বেশি অ্যাপ্লিকেশন একসাথে কাজ করে তা পরীক্ষা করে, তাই বিশ্বব্যাপী পরীক্ষার ডিরেক্টরিটি বোঝায়।
টিএমপি ডিরেক্টরি
প্রকল্পের রুটে অস্থায়ী ডিরেক্টরি রয়েছে, ভিসিএস থেকে বাদ নেই। এটি বিকাশের সময় মিডিয়া / স্ট্যাটিক ফাইল এবং স্ক্লাইট ডাটাবেস সঞ্চয় করতে ব্যবহৃত হয়। টেম্পে থাকা সমস্ত কিছু যে কোনও সময় কোনও সমস্যা ছাড়াই মুছতে পারে।
Virtualenv
আমি পছন্দ করে virtualenvwrapper
সমস্ত ~/.venvs
ডিরেক্টরিকে ডিরেক্টরিতে রাখি তবে আপনি tmp/
এটি একসাথে রাখতে ভিতরে রাখতে পারেন inside
প্রকল্পের টেম্পলেট
আমি এই সেটআপের জন্য প্রজেক্ট টেম্পলেট তৈরি করেছি, জ্যাঙ্গো-স্টার্ট-টেম্পলেট
বিস্তৃতি
এই প্রকল্পের স্থাপনা নিম্নলিখিত:
source $VENV/bin/activate
export DJANGO_SETTINGS_MODULE=project_name.settings.production
git pull
pip install -r requirements.txt
# Update database, static files, locales
manage.py syncdb --noinput
manage.py migrate
manage.py collectstatic --noinput
manage.py makemessages -a
manage.py compilemessages
# restart wsgi
touch project_name/wsgi.py
আপনি এর rsync
পরিবর্তে ব্যবহার করতে পারেন git
, তবে তবুও আপনার পরিবেশ আপডেট করার জন্য আপনার ব্যাচ কমান্ড চালানো দরকার।
সম্প্রতি, আমি [django-deploy][2]
অ্যাপ্লিকেশন তৈরি করেছি , যা আমাকে পরিবেশ আপডেট করার জন্য একক পরিচালনা কমান্ড চালানোর অনুমতি দেয়, তবে আমি এটিকে কেবল একটি প্রকল্পের জন্য ব্যবহার করেছি এবং আমি এখনও এটি ব্যবহার করছি।
স্কেচ এবং খসড়া
টেম্পলেটগুলির খসড়া আমি বিশ্বব্যাপী templates/
ডিরেক্টরিতে রাখি । আমি অনুমান করি যে কেউ sketches/
প্রকল্পের মূলের ফোল্ডার তৈরি করতে পারে তবে এটি এখনও ব্যবহার করেন নি।
প্লাগেবল অ্যাপ্লিকেশন
এই অ্যাপসটি সাধারণত ওপেন সোর্স হিসাবে প্রকাশের জন্য প্রস্তুত হয় are আমি জাঙ্গো-ফর্ম থেকে নীচে উদাহরণ গ্রহণ করেছি
~/projects/django-app/
docs/
app/
tests/
example_project/
LICENCE
MANIFEST.in
README.md
setup.py
pytest.ini
tox.ini
.travis.yml
...
ডিরেক্টরিগুলির নাম পরিষ্কার (আমি আশা করি)। আমি অ্যাপ্লিকেশন ডিরেক্টরিটির বাইরে পরীক্ষা ফাইলগুলি রেখেছি, তবে এটি সত্যিই কিছু যায় আসে না। এটি সরবরাহ করা জরুরী README
এবং setup.py
তাই প্যাকেজটি সহজেই ইনস্টল হয়ে যায় pip
।