پکیجهای پراستفاده در یک پروژه جنگو - قسمت اول
آیا میخواهید یک پروژه جنگو را شروع کنید؟ پس احتمالا به دنبال پکیجهایی هستید که میتوانند در هنگام استفاده از این فریمورک به شما در کارتان کمک کنند. در این مطلب به توضیح کوتاهی از برخی از این پکیجها میپردازیم که میتوانند به راحتتر شدن کار شما کمک کنند.
تفاوت ماژول و پکیج چیست؟
گاهی اوقات ماژولها و پکیجها با هم اشتباه گرفته میشوند. پس در ابتدای کار بهتر است که تفاوت این دو روشن شود تا بعدا مشکلی پیش نیاید.
ماژول یک فایل پایتون یگانه و به صورت تکی است ، در حالی که پکیج یک مجموعه از این گونه ماژولهاست. به گروهی از ماژولهای پایتون که در کنار هم قرارگرفتهاند پکیج گفته میشود. باید دقت داشت که پکیجها دارای یک فایل اضافهی 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 پروژه اضافه کنید.
"""mysite 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'))
"""
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
مطلبی دیگر از این انتشارات
9 اشتباه متداول بین برنامه نویسان پایتون - قسمت اول
مطلبی دیگر از این انتشارات
چقدر با ماژول OS پایتون آشنایی دارید؟ 10 تابع پرکاربرد این ماژول همراه با مثال
مطلبی دیگر از این انتشارات
9 تابع پیش فرض در پایتون که باید با آنها آشنا باشید - قسمت دوم