با سلام و درود، من با پیش فرض اینکه آشنایی مقدماتی با پایتون و دیجنگو دارید این آموزش رو پیش میرم. تو این آمزوش قصد دارم روشی برای استفاده از جداول شهر و کشور ها برای استفاده از پروژه های Django (دیجنگو) بهتون معرفی کنم.
معرفی
خب برای این منظور من از django-cities استفاده کردم. ( لینک پروژه در گیتهاب – GitHub )
پیش نیاز
برای پروژه فوق پایگاه داده های شما باید از spatial queries پشتبیانی بکنه. ( برای اطلاعات بیشتر به اینجا نگاهی بیاندازید)
من از دیتابیس Postgre استفاده می کنم و برای این منظور باید postgis را نصب کنم. برای این کار کافیه فقط دستور زیر را اجرا کنید :
sudo apt-get install postgis
حال نوبت به پروژه django خودتون می شود، برای تغییرات فقط باید داخل فایل setting پروژه، backend پایگاه داده را به عبارت زیر تغییر دهید:
django.contrib.gis.db.backends.postgis
کار بعدی افزودن خط زیر در همون فایل settingمی باشد و فقط نام پایگاه داده رو به نام دیتابیس خودتون تغییر دهید :
POSTGIS_TEMPLATE = 'database_name'
خب اکثر کار تا اینجا انجام شده.
نصب django-cities
برای نصب ، آسونترین روش دستور زیر هست:
pip install django-cities
یا با wget فایل زیپ را دانلود و سپس استخراجش کنید:
wget https://github.com/coderholic/django-cities/archive/master.zip
unzip master.zip
حالا که نصب را انجام دادید، در قدم اول باید ‘cities’, را به INSTALLED_APPS داخل فایل setting پروژه اضافه کنید :
حال وقتش رسید که پروژه را migrate کنید تا جداول شهر و کشور به پایگاه داده تان اضافه شود،
python manage.py makemigrations
و
python manage.py migrate
خب در تصویر زیر می بینید که جداول به درستی به پایگاه داده اضافه شده اند (تصویرذیل از pgadmin گرفته شده است ):
خب جداول اضافه شدند ولی هنوز داده ای داخلشون نیست، نوبت به import کردن رسید، یه سری تنظیمات باید داخل فایل setting پروژه اضافه بشه ، دستورات از قرار زیر هستند:
CITIES_DATA_DIR = os.path.join(BASE_DIR, 'cities')
CITIES_VALIDATE_POSTAL_CODES = True
CITIES_LOCALES = ['en', 'und', 'LANGUAGES', 'ira', 'pes']
CITIES_POSTAL_CODES = ['ALL']
CITIES_FILES = {
# ...
'city': {
'filename': 'cities1000.zip',
'urls': ['http://download.geonames.org/export/dump/'+'{filename}']
},
# ...
}
خط اول دایرکتوری دانلود می باشد، حواستون باشه باید دایرکتوری قابل نوشتن (writable) باشد. باقی خطوط نیز مشخص هست و هر تغییری دوست داشتید می تونید بدید.
بعد از تنظیمات فوق نوبت به دستور پایانی می رسه :
python manage.py cities --import=all
صبر، صبر و صبر 🙂 صبر داشته باشید تا دانلود ها تکمیل بشه.
البته توجه داشته باشید که دستور بالا به import تمامی داده ها می پردازد و طولانی خواهد بود (مخصوصا importکردن داده های مربوط به کد پستی)
اگر فقط کشور ها و شهر ها را می خواهید، از دو دستور زیر استفاده کنید:
python manage.py cities --import=country
python manage.py cities --import=city
پس از import در تصویر زیر مشاهده می کنید که برای مثال جدول کشور ها را شنان داده است:
دوست عزیز سلام امکانش هست که کشور رو انتخاب کنیم و فقط همون به دیتابیس اضافه بشه.
ببخشید یادم رفت ازتون تشکر کنم.ازاینکه کمکم کردید سپاسگزارم.موفق باشید.
سلام، خواهش می کنم، بله امکانش هست، کافیه از دستور python manage.py cities –import=country به هنگام importکردن داده ها استفاده کنید 🙂