Django cheet sheet#
প্রতিটি framework এর কিছু default step থাকে, যা ব্যবহার করে frame-work তার structure তৈরি করা হয়। এর এই structure এর ভিতর সব operation implement করা হয়।
django এর 2 version এর official doc এর link এইখানে the official documentation । আমরা django2.XX version এর কিছু shortcut এইখানে দেখব।
Initializing pipenv (optional)#
আমরা conda বা venv বা pipenv যে কোন উপায় এ django এর virtual environment বানাইতে পারি।
অমি traditional পুরনো কিন্তু এখনও বহুল প্রচলিত pipenv বানানো দেখাইতেছি । আমরা পুরো কাজটা sell ব্যবহার করে করব।
প্রথমে একটা folder বানায়ে ফেলি shell ব্যবহার করে
$ mkdir <folder_Name>
এখন ঐ folder এ প্রবেশ করি
$ cd <folder_Name>
এখন pipenv কে Initialize করব
$ pipenv install
এখন pipenv shell এ প্রবেশ করব
$ pipenv shell
এখন django install করব
$ pipenv install django
(django এর latest stable version install হইবে)
অন্যান্য package গুলোও একই ভাবে install করতে পারি
$ pipenv install <packageName>
Creating a project#
shell ব্যবহার করে আমরা যে folder এ django project বানাইতে চাই ঐ folder এ যাব
$ cd <folder_name>
এখন project তৈরি করব
$ django-admin startproject <project_name>
project তৈরি এর পর কিছু sub-directory পাব :
>project/
manage.py
>project/
__init__.py
settings.py
urls.py
wsgi.py
আমরা development server run করতে
$ python manage.py runserver
shell এ লিখব । shell টা অবশ্যয় manage.py ফাইল এর directory তে থাকতে হবে এবং তৈরি django installed environment এ থাকতে হবে।
যদি
SECRET_KEY
ব্যবহার করতে চাই , যা Django project কে আরও secure করবে তা হইলে,project এর
settings.py
এর মধ্যেSECRET_KEY
line টা change করতে হবে:
SECRET_KEY = os.environ.get('SECRET_KEY')
আমরা python এর secrets লাইব্রেরি ব্যবহার করে খুব সহজে SECRET_KEY generate করতে পারি :
>>> import secrets
>>> secrets.token_hex()
shell ব্যবহার করে environment variable এ SECRET_KEY set করা যায় ।
export SECRET_KEY=<secret_key>
Creating an app#
1st project folder এ যাব shell ব্যবহার করে
$ cd <outer_project_folder>
এখন shell এ এই command ব্যবহার করে new app create করব
$ python manage.py startapp <app_name>
new created app এর directory
app
folder এ গিয়ে new এর একটা py ফাইল create করবurls.py
এখন project directory দেখতে এই রকম হবে :
>project/
manage.py
db.sqlite3
>project/
__init__.py
settings.py
urls.py
wsgi.py
>app/
>migrations/
__init__.py
__init__.py
admin.py
apps.py
models.py
tests.py
urls.py
views.py
new created app টা project এ add করতে
settings.py
এরINSTALLED_APPS
list এ গিয়ে app টার নাম add করতে হবে :
INSTALLED_APPS = [
# ...
'app',
]
পরিবর্তনটি migrate করতে activated pipenv এর shell এ লিখব:
$ python manage.py migrate
Creating a view#
new created app এর app directory এর
views.py
file a নিচের line গুলো এর দ্বারা একটা basic view পাইতে পারি :
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello, World!")
app directory এর
urls.py
এ নিচের line গুলো এর দ্বারা একটা basic view এর url পাইতে পারি
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
]
এখন project এর
urls.py
এ app এর urls.py define করলেই আমাদের view complete.
from django.contrib import admin
from django.urls import include, path
urlpatterns = [
path('app/', include('app.urls')),
path('admin/', admin.site.urls),
]
Remember: আমরা এইখানে ২টা
urls.py
ফাইল নিয়ে কাজ করছিapp এর
urls.py
file এ views.py এর method define করছি আর project এরurls.py
এ app এর urls.py file টা define করছি।
Creating a template#
app directory তে নিচের structure এ HTML , CSS, JS বা Front-end file গুলো থাকে। media file এর বাপার টা একটু আলাদা। আমরা পরে media file নিয়ে আলোচনা করব।
>app/
>templates/
index.html
>static/
style.css
script.js
template view file এ ব্যবহার করা হয়,
views.py
file এ নিচের line গুলো add করে আমরা django project এ একটা customized html ফাইল view এবং execute করতে পারি :
from django.shortcuts import render
def index(request):
return render(request,'index.html')
আমরা যে কোন context বা variable কে html এ add korte পারি বা এক কথায় templating করতে পারি।:
def index(request):
context = {"context_variable": context_variable}
return render(request,'index.html', context)
এখন
settings.py
file এ নিচের script add করা হয়েছে। :
STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, "static")
]
base html structure আমরা অন্য hyml file এ তৈরি করে তা যে কোন HTML file এ main structure হিসেবে ব্যবহার করতে
extends
ব্যবহার করা হয়। Demo হিসেবে নিচের code follow করতে পারি। :
এখন
base.html
এ block content টা specific part এ add করতে হবে :
Creating a model#
একটি সাধারণ
models.py
file এর Demo নিচে দেখানো হয়েছে। :
from django.db import models
class Person(models.Model):
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=30)
Note: Django তে primary key তৈরি করতে হয় না , Django automatically একটি IntegerField add করে।
model এর structure এ কোন change করলে migration করে model টাকে update করতে হয়। নিচের code SHELL এ execute করে model টার migration করতে হয়। :
$ python manage.py makemigrations <app_name>
$ python manage.py migrate
Note: including <app_name> is optional.
একটি one-to-many relationship
ForeignKey
এর দ্বারা তৈরি হয়। :
class Musician(models.Model):
first_name = models.CharField(max_length=50)
last_name = models.CharField(max_length=50)
instrument = models.CharField(max_length=100)
class Album(models.Model):
artist = models.ForeignKey(Musician, on_delete=models.CASCADE)
name = models.CharField(max_length=100)
release_date = models.DateField()
num_stars = models.IntegerField()
In this example, Musician একটি foreignKey যা Album এ ব্যবহার করা হয়েছে। :
>>> m = Musician.objects.get(pk=1)
>>> a = m.album_set.get()
একটি many-to-many relationship
ManyToManyField
ব্যবহার করে তৈরি করা হয়। :
class Topping(models.Model):
# ...
pass
class Pizza(models.Model):
# ...
toppings = models.ManyToManyField(Topping)
Note : ManyToManyField
শুধু মাত্র একটা model এই Define করা হয় ।
এ ছাড়া Django
OneToOneField
relation provide করে , একটি one-to-one relationshipunique = True
দ্বারাও define করা যায় যা model টিরForeignKey
:
ForeignKey(SomeModel, unique=True)
আরও জানার জন্য official documentation for database models এ গিয়ে দেখুন।
Creating model objects and queries#
উদাহরণ স্বরূপ
models.py
file:
from django.db import models
class Blog(models.Model):
name = models.CharField(max_length=100)
tagline = models.TextField()
def __str__(self):
return self.name
class Author(models.Model):
name = models.CharField(max_length=200)
email = models.EmailField()
def __str__(self):
return self.name
class Entry(models.Model):
blog = models.ForeignKey(Blog, on_delete=models.CASCADE)
headline = models.CharField(max_length=255)
body_text = models.TextField()
pub_date = models.DateField()
authors = models.ManyToManyField(Author)
rating = models.IntegerField()
def __str__(self):
return self.headline
shell ব্যবহার করে একটি object তৈরি করতে :
$ python manage.py shell
>>> from blog.models import Blog
>>> b = Blog(name='Beatles Blog', tagline='All the latest news.')
>>> b.save()
object টার change save করতে :
>>> b.name = 'The Beatles Blog'
>>> b.save()
objects retrieve করতে :
>>> all_entries = Entry.objects.all()
>>> indexed_entry = Entry.objects.get(pk=1)
>>> find_entry = Entry.objects.filter(name='Beatles Blog')
Using the Admin page#
superuser
তৈরি করতে :
$ python manage.py createsuperuser
একটি model কে Admin page এ add করতে
admin.py
এ Demo দেখানো হয়েছে।
from django.contrib import admin
from .models import Authors, Books
admin.site.register(Authors)
admin.site.register(Books)