- Python includes a lightweight database called SQLite.
- install pip
- install virtualenv:
pip install virtualenv
virtualenv venv
for addsource /path/to/venv/bin/activate
for use
- install Django:
pip install Django
django-admin startproject projectname .
for make django projectpython3 manage.py runserver
for run and see in browser
import django
print(django.get_version())
-
python3 manage.py startapp products
for add app (modules package) -
in app folder views.py
from django.http import HttpResponse
from django.shortcuts import render
def index(request):
return HttpResponse('Hello World!')
- add urls.py in app folder
from django.urls import path
from . import views
urlpatterns = [
path('',views.index)
]
- in main folder urls.py
from django.contrib import admin
from django.urls import path,include
urlpatterns = [
path('admin/', admin.site.urls)
path('products/', include('products.urls')) # add app folder
]
- in app folder models.py
from django.db import models
class Product(models.Model):
name = models.CharField(max_length=255)
price = models.FloatField()
stock = models.IntegerField()
image_url = models.CharField(max_length=2083) # max size for link
- add app to migration list -> main folder
setttings.py
-> inINSTALLED_APPS
add config class of app from app folder apps.py likeproducts.apps.ProductConfig
- make migration
python3 manage.py makemigrations
- run migration
python3 manage.py migrate
- for see sqlite data sqlitebrowser
python3 manage.py createsuperuser
- in app folder
admin.py
from django.contrib import admin
from .models import Product
admin.site.register(Product)
- after thet, we can access product to change in admin panel
- in app folder
admin.py
from django.contrib import admin
from .models import Product
class ProductAdmin(admin.ModelAdmin):
list_display = ('name', 'price', 'stock')
admin.site.register(Product, ProductAdmin)
- add folder
templates
in app folder - add
index.html
for index
<h1>Products</h1>
<ul>
{% for product in products %}
<li>{{ product.name }} (${{ product.price }})</li>
{% endfor %}
</ul>
views.py
in app folder
from django.http import HttpResponse
from django.shortcuts import render
from .models import Product
def index(request):
products = Product.objects.all()
return render(request,'index.html', { 'products': products })
# Product.objects.filter()
# Product.objects.get()
# Product.objects.save()
-
add
base.html
in template folder -
copy Starter template from bootstrap site to it
-
add
{% block content %}{% endblock %}
for content span -
add
{% extends 'base.html' %}
first line of other template and content between{% block content %}
&{% endblock %}
-
for use template between base template for all app
- make
templates
folder in root folder and make base template - in main folder
setting.py
-> TEMPLATES ->'DIRS':[os.path.join(BASE_DIR, 'templates')]
- make