پکیج‌های پراستفاده در یک پروژه جنگو - قسمت اول

منبع و صاحب عکس : geekboots.com
منبع و صاحب عکس : geekboots.com

آیا می‌خواهید یک پروژه جنگو را شروع کنید؟ پس احتمالا به دنبال پکیج‌هایی هستید که می‌توانند در هنگام استفاده از این فریم‌ورک به شما در کارتان کمک کنند. در این مطلب به توضیح کوتاهی از برخی از این پکیج‍ها می‌پردازیم که می‌توانند به راحت‌تر شدن کار شما کمک کنند.

تفاوت ماژول و پکیج چیست؟

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

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

1 - پکیج django-tinymce4-lite

وقتی که تنظیمات پایه‌ای وب‌اپ خود را انجام دادید می‌توانید این پکیج را نصب کنید. این نسخه از این پکیج در اصل نسخه سبک‌تر django-tinymce4 است.

در اصل TinyMCE یک تکست‌ادیتور WYSIWYG (what you see is what you get) است که عناصر به زبان HTML را به متن و یا editor instance تبدیل می‌کند. این پکیج پایتون در مواردی که می‌خواهید یک بلاگ بسازید بسیار مناسب است، چون می‌توان به راحتی متن که بعدا به HTML تبدیل می‌شود را در خود template ادیت کرد.

بعد از نصب این پکیج، باید tinymce را در لیست installed apps در فایل setting قرار دهید و سپس تنظیمات پیش فرض آن را وارد کنید. این تنظیمات پیش‌فرض مشخصات تولبارها، spellcheck، weight و height را تعیین می‌کنند.

INSTALLED_APPS = [
    ...
    ...
    'tinymce',
]

TINYMCE_DEFAULT_CONFIG = {
    'height': 400,
    'width': 1000,
    'cleanup_on_startup': True,
    'custom_undo_redo_levels': 20,
    'selector': 'textarea',
    'browser_spellcheck': 'true',
    'theme': 'modern',
    'plugins': ' ' '
                textcolor save link image media preview codesample contextmenu
                table code lists fullscreen insertdatetime nonbreaking
                contextmenu directionality searchreplace wordcount visualblocks
                visualchars code fullscreen autolink lists charmap print hr
                anchor pagebreak
                ' ' ',
    'toolbar1': ' ' '
                fullscreen preview bold italic underline | fontselect,
                fontsizeselect | forecolor backcolor | alignleft alignright |
                aligncenter alignjustify | indent outdent | bullist numlist table |
                | link image media | codesample
                ' ' ',
    'toolbar2': '''
               visualblocks visualchars |
                charmap hr pagebreak nonbreaking anchor | code |
                ' ' ',
    'contextmenu': 'formats | link image',
    'menubar': True,
    'statusbar': True,
}

بعد از انجام این کارها باید مسیر tinymce را به فایل url پروژه اضافه کنید.

&quot&quot&quotmysite URL Configuration

The `urlpatterns` list routes URLs to views. For more information please see:
    https://docs.djangoproject.com/en/2.1/topics/http/urls/
Examples:
Function views
    1. Add an import:  from my_app import views
    2. Add a URL to urlpatterns:  path('', views.home, name='home')
Class-based views
    1. Add an import:  from other_app.views import Home
    2. Add a URL to urlpatterns:  path('', Home.as_view(), name='home')
Including another URLconf
    1. Import the include() function: from django.urls import include, path
    2. Add a URL to urlpatterns:  path('blog/', include('blog.urls'))
&quot&quot&quot
from django.contrib import admin
from django.urls import path, include


urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include ('main.urls')),
    path('tinymce/', include('tinymce.urls')), #add this

]

و در نهایت می‌توانید TinyMCE را به مدل جنگو خود با import کردن HTMLField از آن و سپس صدا کردن آن داخل فیلد مدل موردنظر به راحتی اضافه کرد.

from django.db import models
from tinymce import HTMLField

class MyModel(models.Model):
    ...
    content = HTMLField()

2 - پکیج Pillow

اگر در پروژه جنگو خود نیاز به قابلیت آپلود عکس و یا فایل دارید ، مثلا اگر نیاز به یک محل برای آپلود عکس در مدل خود دارید (برای مثال عکسی به عنوان کاور پست)، به این پکیج نیاز دارید. این پکیج از کتاب‌خانه‌ی Python Imaging فورک شده است تا به آپلود درست فایل‌ها کمک کند.

بعد از نصب این پکیج، باید یک URLبرای فولدر محتوای خود و یک دایرکتوری ROOT به فایل ستینگ خود اضافه کنید.

MEDIA_URL = '/media/'

MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

و بعد از آن، باید در فایل URL پروژه، import های مناسب را انجام دهید و urlpattern به فولدر محتوا را مشخص کنید.

from django.contrib import admin
from django.urls import path, include
from django.conf import settings #add this
from django.conf.urls.static import static #add this

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include ('main.urls')),
]

حال برای آپلود عکس، باید به فایل مدل رفته و یک ImageField با آدرس آپلود با عنوان 'images/' اضافه کنیم. در هنگام آپلود عکس در پروژه، عکس آپلود شده به فولدر images که در زیرشاخه‌ی media قرار دارد اضافه می‌شود (این فولدر بعد از آپلود عکس به طور اتوماتیک اضافه می‌شود).

from django.db import models

class MyModel(models.Model):
    ...
    image = models.ImageField(upload_to='images/')


امیر هستم از ایران پایتونیرز، ممنونم از وقتی که برای خوندن قسمت اول این پست گذاشتید.

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

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

برای دیدن ویدیو های آموزشی که دوستانم برای شما ساخته اند، می تونید به کانال ما در آپارات ، یوتیوب و یا تلگرام مراجعه کنید.

اگر موضوعی مدنظرتون هست که در قالب متن برای شما جذابیت داره، پیشنهاداتتون رو پذیراییم.

منبع : www.ordinarycoders.com