راهنمای نصب و راه‌اندازی جنگو | نصب Django در ۵ دقیقه!

راهنمای نصب و راه‌اندازی جنگو | نصب Django در ۵ دقیقه!

تاریخ انتشار: ۱۱ شهریور ۱۴۰۳
آخرین بروزرسانی: ۱۱ شهریور ۱۴۰۳
زمان مطالعه: 15 دقیقه
۰
(۰)

نصب جنگو (Django) از شما کدنویس تمیزتری می‌سازد! بله، جنگو همان فریم‌ورک توسعه‌ای است که روی اصل DRY یا Don’t Repeat Yourself تاکید دارد و همین اصرارش بر تکرار نکردن کد باعث می‌شود که توسعه‌دهندگان جنگو کدی تمیز و کارآمد بنویسند. اگر شما هم قصد دارید به جمع توسعه‌دهندگان تمیزکار جنگو بپیوندید، همراه ما باشید. در این مقاله به بررسی کاربردها و مزایای جنگو، پیش‌نیازهای نصب، روش نصب و تنظیمات اولیه، ایجاد یک برنامه جدید، مدیریت پایگاه داده، و نحوه ایجاد و نمایش صفحات وب خواهیم پرداخت. همچنین به تعامل با پایگاه داده در جنگو می‌پردازیم تا بتوانید با اطمینان و سرعت بیشتری پروژه‌های وب خود را آغاز کنید.

جنگو چیست؟

جنگو (Django) یک فریم‌ورک توسعه وب سطح بالا و رایگان، به زبان برنامه‌نویسی پایتون است که به توسعه‌دهندگان امکان ساخت وب‌سایت‌ها و برنامه‌های وب را با سرعت بالا و با استفاده از ابزارها و الگوهای پیش‌ساخته فراهم می‌کند. این فریمورک با قابلیت استفاده مجدد از مولفه‌ها و ویژگی‌هایی مثل سیستم ورود، اتصال پایگاه داده و عملیات CRUD (ایجاد حذف به‌روزرسانی خواندنی) برای عملیات پیچیده در ساخت وبسایت، اپلیکیشن، سیستم‌های مدیریت محتوا (CMS)، پلتفرم‌های اجتماعی، و برنامه‌های وب پیچیده استفاده می‌شود.

مروری بر کاربرد ها و مزایای استفاده از جنگو

پیش از آن که به سراغ نصب و راه اندازی جنگو برویم، بررسی می‌کنیم که فریمورک Django برای چه کاربردهایی مناسب است و چه مزایایی دارد؛ تا در انتخاب خود مطمئن شوید و همان چیزی که نیاز دارید را نصب کنید. 

کاربرد های Django چه مواردی هستند؟

جنگو به دلیل ویژگی‌های امنیتی قوی، انعطاف‌پذیری بالا، مستندات جامع، و پشتیبانی قوی از جامعه، یک انتخاب عالی برای توسعه طیف گسترده‌ای از پروژه‌های وب است. کاربردهای رایج جنگو عبارتند از :

۱. توسعه وب‌ سایت‌ های پیچیده و بزرگ

  •  سیستم‌های مدیریت محتوا (CMS): جنگو به دلیل ساختار انعطاف‌پذیر و ابزارهای مدیریتی قدرتمند، یک انتخاب مناسب برای ساخت CMS‌های سفارشی است.
  • فروشگاه‌های آنلاین: با نصب جنگو می‌توان فروشگاه‌های آنلاین را با امکانات متنوع از جمله مدیریت محصولات، سبد خرید، و پرداخت آنلاین پیاده‌سازی کرد.
  • شبکه‌های اجتماعی: جنگو به دلیل قابلیت‌های مقیاس‌پذیری بالا و مدیریت داده‌های پیچیده، مناسب برای ایجاد پلتفرم‌های اجتماعی است.
  •   پلتفرم‌های آموزشی آنلاین: بسیاری از سیستم‌های مدیریت یادگیری (LMS) با استفاده از جنگو توسعه یافته‌اند، زیرا امکان مدیریت کاربران، دوره‌ها، و محتوای آموزشی را به خوبی فراهم می‌کند.

۲. پروژه‌ های سریع و نمونه‌ سازی

  •   نمونه‌سازی سریع (Rapid Prototyping): جنگو با ابزارهای خود به توسعه‌دهندگان امکان ایجاد نمونه‌های اولیه سریع از پروژه‌ها را می‌دهد، که این امر برای جلسات بازخورد و تصمیم‌گیری‌های سریع بسیار مفید است.
  • پروژه‌های کوتاه‌مدت: برای پروژه‌های کوچک و متوسط که نیاز به توسعه سریع دارند، جنگو انتخاب مناسبی است.

۳. برنامه‌ های مدیریت داده

  • سیستم‌های مدیریت داده: جنگو با ORM قدرتمند خود امکان تعامل آسان با پایگاه‌های داده را فراهم می‌کند. این ویژگی برای برنامه‌هایی که نیاز به مدیریت داده‌های پیچیده دارند، بسیار مناسب است.
  • برنامه‌های گزارش‌دهی: با نصب جنگو می‌توان برنامه‌های گزارش‌دهی پیچیده با قابلیت تجسم داده‌ها و فیلترهای مختلف را ایجاد کرد.

۴. سیستم‌ های بانکی و مالی

  • تراکنش‌های مالی: امنیت بالا و مدیریت تراکنش‌های مالی با دقت در جنگو، آن را به گزینه‌ای مناسب برای سیستم‌های بانکی و مالی تبدیل کرده است.
  • مدیریت کاربران و مجوزها: جنگو امکانات پیشرفته‌ای برای مدیریت کاربران و تعیین مجوزهای مختلف برای دسترسی به بخش‌های مختلف سیستم ارائه می‌دهد.

مزایای جنگو در توسعه چیست؟

جنگو به دلیل امنیت بالا و ویژگی‌های پیش‌فرض ضد حملات، سرعت توسعه با استفاده از ابزارهای قدرتمند و مستندات جامع، و مقیاس‌پذیری که امکان ساخت پروژه‌های کوچک تا بزرگ را فراهم می‌کند. به همین دلیل نصب جنگو انتخاب بسیاری از توسعه‌دهندگان است. بیایید کمی در مزایای Django عمیق‌تر شویم:

۱. کاربری سریع و آسان 

  •   مستندات جامع: جنگو دارای مستندات جامع و قابل فهم است که به توسعه‌دهندگان کمک می‌کند تا به سرعت با فریم‌ورک آشنا شوند و پروژه‌های خود را آغاز کنند.
  •   کتابخانه‌های جانبی: تعداد زیادی کتابخانه و پلاگین موجود برای جنگو وجود دارد که توسعه‌دهندگان با نصب جنگو، می‌توانند از آن‌ها برای افزودن ویژگی‌های مختلف به پروژه‌های خود استفاده کنند.

۲. امنیت بالای Django

  • محافظت در برابر حملات رایج: جنگو به‌طور پیش‌فرض شامل ویژگی‌های امنیتی مانند جلوگیری از حملات XSS، CSRF، و SQL Injection است.
  •   مدیریت رمز عبور: جنگو از الگوریتم‌های هش قوی برای مدیریت رمز عبور استفاده می‌کند و همچنین امکان استفاده از توکن‌های یک‌بارمصرف برای احراز هویت را فراهم می‌کند.

۳. پشتیبانی از پایگاه‌های داده مختلف

  • پشتیبانی چند پایگاه‌داده‌ای: جنگو به‌طور پیش‌فرض از پایگاه‌های داده‌ای مانند SQLite، PostgreSQL، MySQL، و Oracle پشتیبانی می‌کند و توسعه‌دهندگان می‌توانند به راحتی بین آن‌ها جابجا شوند.
  • قابلیت مهاجرت داده: جنگو ابزارهای قدرتمندی برای مهاجرت داده‌ها ارائه می‌دهد که به توسعه‌دهندگان امکان اعمال تغییرات در ساختار پایگاه داده بدون از دست دادن داده‌ها را می‌دهد.

۴. مقیاس‌پذیری

  • توسعه ماژولار: نصب جنگو به توسعه‌دهندگان امکان توسعه ماژولار برنامه‌ها را می‌دهد که این ماژول‌ها به بهبود مقیاس‌پذیری و نگهداری کد کمک می‌کند.
  •  تعامل با سرویس‌های مختلف: جنگو به‌راحتی با سرویس‌های مختلف مانند Redis، Celery، و ElasticSearch تعامل می‌کند که این امر به بهبود عملکرد و مقیاس‌پذیری برنامه‌ها کمک می‌کند.

۵. پشتیبانی قوی جامعه

  • انجمن‌های فعال: جامعه بزرگ و فعال جنگو به توسعه‌دهندگان کمک می‌کند تا به سرعت مشکلات خود را حل کنند و از تجربیات دیگران بهره‌مند شوند.

   رویدادهای جامعه: رویدادهای مختلفی مانند جنگوکنف (DjangoCon) برگزار می‌شود که فرصتی مناسب برای یادگیری و تبادل نظر با دیگر توسعه‌دهندگان فراهم می‌کند.

 پیش‌نیاز های نصب جنگو

برای نصب و راه‌اندازی جنگو، ابتدا باید برخی پیش‌نیازها را فراهم کنید.  پیش‌نیازهای نصب جنگو، شامل داشتن یک سیستم عامل سازگار، نصب پایتون، و آشنایی با pip (مدیر بسته‌های پایتون) می‌شود. سیستم‌عامل‌های MacOs، ویندوز و تمام توزیع‌های لینوکس با جنگو سازگاری دارند، اما بهتر است از سازگاری با نسخه‌ٔ OS خودتان در زمان دانلود مطمئن شوید. پس بیایید کار نصب جنگو را با نصب پایتون شروع کنیم. 

نصب پایتون در ویندوز

برای اینکه پایتون را در سیستم ویندوزی خود نصب کنید، باید مراحل زیر را بگذرانید:

  1. دانلود از وبسایت رسمی پایتون: به وبسایت رسمی پایتون بروید و آخرین نسخه پایدار پایتون را دانلود کنید: 
  2. اجرای نصب‌کننده: پس از دانلود، فایل نصب‌کننده (installer) را اجرا کنید و حتماً گزینه “Add Python to PATH” را فعال کنید تا پایتون به مسیر سیستم اضافه شود.

 

نصب پایتون در ویندوز

 

  1. پیگیری مراحل نصب: مراحل نصب را دنبال کنید و تنظیمات پیش‌فرض را قبول کنید.

نصب پایتون در macOS

برای نصب پایتون در سیستم‌عامل مک، دو روش وجود دارد. اگر از مرورگر Homebrew کمک بگیرید با یک لاین نصب انجام می‌شود. در روش دوم، نصب از طریق وب‌سایت اصلی پایتون را می‌آموزید. 

۱. روش نصب پایتون  از طریق Homebrew

اگر Homebrew را نصب نکرده‌اید، ابتدا آن را نصب کنید:

 

نصب پایتون در macOS

 

 سپس در Homebrew با استفاده از دستور زیر، پایتون را نصب کنید:

 

   brew install python

 

۲. نصب از وبسایت رسمی پایتون
 به وبسایت رسمی پایتون بروید و نصب‌کننده مناسب برای
macOS را دانلود و نصب کنید:

مرحله ۱: دانلود بسته نصب از وب‌سایت رسمی پایتون

  1. به وب‌سایت رسمی پایتون به آدرس org/downloads بروید.
  2. وب‌سایت به‌طور خودکار سیستم‌عامل شما را تشخیص می‌دهد و دکمه بزرگی برای دانلود آخرین نسخه پایتون نشان می‌دهد. اگر این دکمه را نمی‌بینید، روی لینک macOS کلیک کرده و آخرین نسخه پایتون را انتخاب کنید.

مرحله ۲: نصب پایتون

  1. پس از اتمام دانلود، فایل بسته را دو بار کلیک کنید تا نصب شروع شود.

 

نصب پایتون در macOS

 

  1. راهنمای نصب شما را در طول مراحل راهنمایی می‌کند. در بیشتر موارد، تنظیمات پیش‌فرض مناسب هستند، بنابراین نصب را مانند سایر برنامه‌های macOS ادامه دهید.
  2. ممکن است لازم باشد رمز عبور مک خود را وارد کنید تا اجازه نصب داده شود.

نکته: اگر از مک‌های M1 اپل استفاده می‌کنید، نیاز به نصب Rosetta دارید تا ویژگی‌های مبتنی بر Intel روی مک‌های با تراشه اپل کار کنند.

مرحله ۳: تکمیل نصب

پس از اتمام نصب، پوشه پایتون باز خواهد شد.

 

تکمیل نصب پایتون

 

مرحله ۴: تأیید نصب

برای اطمینان از نصب صحیح پایتون و IDLE، روی IDLE دوبار کلیک کنید. اگر همه چیز درست کار کند، IDLE پوسته پایتون را نشان می‌دهد.

 

تایید نصب پایتون در macOS

 

یک خط کد ساده را در شل تست کنید و مطمئن شوید که نصب به درستی انجام شده‌است. 

 

print("Hello, World!")

 

یادتان باشد که با استفاده از این روش، می‌توانید به‌راحتی نسخه‌های قدیمی پایتون را با دانلود نصب‌کننده جدید به‌روزرسانی کنید.

نصب پایتون در لینوکس

برای نصب پایتون در توزیع‌های مختلف لینوکس، کافی است دستوری که برای هر توزیع معرفی کردیم را در شل اجرا کنید:

– برای توزیع‌های مبتنی بر دبیان (مثل اوبونتو):

 

sudo apt update
  sudo apt install python3 python3-pip

 

  – برای توزیع‌های مبتنی بر Red Hat:

 

  sudo dnf install python3 python3-pip

 

آشنایی با pip برای نصب پایتون

PIP کلمه‌ای اختصاری از عبارت “Pip Installs Packages” بسته‌ی پیش‌فرض برای پایتون است که به شما امکان نصب، به‌روزرسانی و مدیریت کتابخانه‌ها و بسته‌های پایتون را می‌دهد. با استفاده از pip، می‌توانید به راحتی بسته‌های مختلف پایتون را از مخزن Python Package Index  دانلود و نصب کنید. برای نصب pip، ابتدا باید پایتون را بر روی سیستم خود نصب کرده باشید. بسیاری از نسخه‌های پایتون به‌طور پیش‌فرض با pip همراه هستند. برای بررسی نصب بودن pip، می‌توانید از دستور زیر استفاده کنید:

 

pip --version

 

اگر pip نصب نشده باشد، می‌توانید با استفاده از اسکریپت get-pip.py آن را نصب کنید. ابتدا این کامند را برای دانلود PIP اجرا کنید:

 

   curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py

 

و سپس با این دستور آن را اجرا کنید:

 

   python get-pip.py

 

برای به‌روزرسانی بسته از دستور زیر استفاده کنید:

 

  pip install --upgrade package_name

 

با استفاده از خط زیر، می‌توانید بسته را حذف کنید:

 

  pip uninstall package_name

 

برای مدیریت dependencies در پروژه، می‌توانید از فایل requirements.txt استفاده کنید که لیست بسته‌های مورد نیاز را شامل می‌شود:

 

pip freeze > requirements.txt
pip install -r requirements.txt

 

با استفاده از pip، مدیریت بسته‌های پایتون ساده‌تر و کارآمدتر می‌شود، که این امر توسعه و نگهداری پروژه‌های پایتون را تسهیل می‌کند.

آشنایی با مراحل نصب جنگو

پس از نصب پایتون و pip، می‌توانید نصب جنگو را با استفاده از pip به روش زیر انجام دهید:

 مرحله ۱: ایجاد یک محیط مجازی 

  1. ترمینال را باز کنید.
  2. یک پوشه جدید برای پروژه خود ایجاد کنید و به آن پوشه بروید:

 

mkdir myproject
    cd myproject

 

  1. یک محیط مجازی ایجاد کنید:

 

    python3 -m venv venv

 

  1. محیط مجازی را فعال کنید:

    – در مک و لینوکس: 

 

      source venv/bin/activate

 

    – در ویندوز:

 

    django-admin startproject mysite

 

 مرحله ۲: نصب جنگو

  1. با فعال بودن محیط مجازی، دستور زیر را برای نصب جنگو وارد کنید:

 

    pip install django

 

 مرحله ۳: تأیید نصب جنگو

  1. برای اطمینان از نصب صحیح جنگو، دستور زیر را وارد کنید تا نسخه نصب جنگو نمایش داده شود:

 

    python -m django --version

 

حالا باید نسخه جنگو را ببینید.

 

 مرحله ۴: ایجاد پروژه جنگو

  1. پس از نصب جنگو برای ایجاد یک پروژه جدید، دستور زیر را وارد کنید:

 

    django-admin startproject mysite

 

مرحله ۵: اجرای سرور توسعه جنگو

  1. به پوشه پروژه خود بروید:    cd mysite
  2. سرور توسعه را اجرا کنید:

 

    python manage.py runserver

 

  1. مرورگر خود را باز کرده و به آدرس http://127.0.0.1:8000/ بروید تا صفحه خوش‌آمدگویی جنگو را ببینید.

با این مراحل،  می‌توانید مطمئن باشید که نصب جنگو به‌درستی انجام شده و پروژه شما آماده توسعه است.

تنظیمات اولیه جنگو

پس از نصب جنگو و ایجاد پروژه، لازم است مراحل زیر را نیز طی کنید:

  1. بررسی فایل settings.py

فایل settings.py شامل تنظیمات مختلفی است که هر یک را به صورت جداگانه بررسی می‌کنیم:

  • SECRET_KEY: کلید مخفی برای امنیت پروژه است. باید به مقدار تصادفی و امن تغییر داده شود.

SECRET_KEY = 'your-secret-key'

 

  • DEBUG: حالت اشکال‌زدایی را فعال یا غیرفعال می‌کند. در محیط توسعه باید True باشد و در محیط تولید False.

     

    DEBUG = True

     

  • ALLOWED_HOSTS: لیست میزبان‌هایی که اجازه دسترسی به پروژه را دارند. در محیط تولید باید تنظیم شود.
ALLOWED_HOSTS = []

 

۲. تنظیمات برنامه‌ها

  • INSTALLED_APPS: لیستی از برنامه‌هایی که در پروژه شما فعال هستند.

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

 

  1. تنظیمات میان‌ افزار ها یا MIDDLEWARE:

این تنظیمات به لیستی از میان‌افزارهایی که درخواست‌ها و پاسخ‌ها را پردازش می‌کنند؛ مربوط می‌شود:

 

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

 

۴.تنظیمات پایگاه داده یا DATABASES

تنظیمات مربوط به پایگاه داده پروژه با پیش‌فرض SQLite است، اما می‌توانید آن را به PostgreSQL، MySQL یا دیگر پایگاه‌های داده تغییر دهید.

 

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': BASE_DIR / 'db.sqlite3',
    }
}

 

یادتان باشد که فایل settings.py قلب تنظیمات پروژه جنگو است و شامل تمامی پیکربندی‌های لازم برای راه‌اندازی و اجرای پروژه می‌باشد. با توجه به نیازهای پروژه خود، این تنظیمات را به دقت بررسی و تغییر دهید.

 ایجاد یک برنامه جدید در جنگو

برای ایجاد یک برنامه جدید در پروژه جنگو، از دستور startapp استفاده می‌شود. ابتدا به پوشه پروژه خود بروید و سپس دستور زیر را وارد کنید:

 

python manage.py startapp myapp

 

این دستور یک پوشه جدید به نام myapp ایجاد می‌کند که شامل فایل‌های پایه‌ای برای برنامه است، مانند models.py، views.py و admin.py. پس از ایجاد برنامه، باید آن را به لیست INSTALLED_APPS در فایل settings.py اضافه کنید تا جنگو از وجود آن مطلع شود. این برنامه جدید می‌تواند شامل مدل‌ها، نماها، قالب‌ها و مسیرهای URL خاص خود باشد که به توسعه قابلیت‌های مختلف پروژه کمک می‌کند.

 مدیریت پایگاه داده در جنگو

جنگو از یک ORM (نگاشت شی-رابطه‌ای) قدرتمند برای مدیریت پایگاه داده استفاده می‌کند. تنظیمات پایگاه داده در فایل settings.py قرار دارد. به طور پیش‌فرض، جنگو از SQLite استفاده می‌کند، اما می‌توان آن را به پایگاه داده‌های دیگری مانند PostgreSQL، MySQL یا Oracle تغییر داد. برای اعمال تغییرات در ساختار پایگاه داده، ابتدا مدل‌های خود را در فایل models.py تعریف کنید، سپس از دستور makemigrations برای ایجاد فایل‌های مهاجرت و migrate برای اعمال این تغییرات به پایگاه داده استفاده کنید:

 

python manage.py makemigrations
python manage.py migrate

 

این دستورات به جنگو کمک می‌کنند تا مدل‌های تعریف شده را به جداول پایگاه داده تبدیل کند.

 ایجاد و نمایش صفحات وب با Django

برای ایجاد و نمایش صفحات وب در جنگو، ابتدا باید نماها (views) و قالب‌ها (templates) را تعریف کنید. نماها در فایل views.py قرار دارند و عملکردی را که باید اجرا شود تعریف می‌کنند. برای نمایش محتوای HTML، باید از قالب‌ها استفاده کنید که در پوشه templates ذخیره می‌شوند. به عنوان مثال، می‌توانید یک نمای ساده ایجاد کنید که یک قالب HTML را بازمی‌گرداند:

 

python
from django.shortcuts import render
def home(request):
    return render(request, 'home.html')

 

سپس، در فایل urls.py، مسیری را تعریف کنید که این نما را به یک URL متصل کند:

 

python
from django.urls import path
from .views import home
urlpatterns = [
    path('', home, name='home'),
]

 

این مراحل به شما کمک می‌کنند تا صفحات وب خود را ایجاد و نمایش دهید.

تعامل با پایگاه داده در جنگو

جنگو از ORM برای تعامل با پایگاه داده استفاده می‌کند که به شما اجازه می‌دهد با استفاده از مدل‌ها به‌صورت شی‌گرا به داده‌ها دسترسی پیدا کنید. پس از نصب جنگو و تعریف مدل‌ها در فایل models.py و انجام مهاجرت‌ها، می‌توانید از این مدل‌ها برای ایجاد، خواندن، به‌روزرسانی و حذف داده‌ها استفاده کنید. به عنوان مثال، برای ایجاد یک رکورد جدید:

 

python
from myapp.models import MyModel
new_record = MyModel(field1='value1', field2='value2')
new_record.save()

 

برای بازیابی رکوردها:

 

python
records = MyModel.objects.all()

 

می‌توانید از فیلترها و روش‌های دیگری نیز برای کوئری‌های پیچیده‌تر استفاده کنید. این تعاملات به شما امکان مدیریت و استفاده از داده‌ها را در برنامه جنگو می‌دهند.

جمع‌ بندی نصب جنگو

جنگو یک فریم‌ورک قدرتمند و کارآمد با ویژگی‌های غنی و ابزارهای پیشرفته، برای توسعه وب‌سایت‌ها و اپلیکیشن‌های پیچیده است. در این مقاله با روش نصب جنگو آشنا شدید. پیش‌نیازهای نصب و تنظیمات اولیه جنگو نسبتاً ساده هستند و با دنبال‌کردن مراحلی که توضیح دادیم، به سادگی و بسیار سریع می‌توانید نصب و راه‌اندازی Django را انجام دهید. مدیریت پایگاه داده، ایجاد و نمایش صفحات وب، و تعامل با داده‌ها نیز از جمله قابلیت‌های مهم و کاربردی جنگو هستند که به توسعه‌دهندگان امکان ایجاد برنامه‌های وب کارآمد و مقیاس‌پذیر را می‌دهند. اگر دربارهٔ این فریمورک و روش نصب آن، سوالی دارید؛ از بخش نظرات با ما در ارتباط باشید تا پاسخ را با شما به اشتراک بگذاریم.

چه رتبه ای می‌دهید؟

میانگین ۰ / ۵. از مجموع ۰

اولین نفر باش

title sign
معرفی نویسنده
title sign
دیدگاه کاربران

close-image