πŸ€“ Магазин Π³ΠΈΠΊΠΎΠ² Π½Π° Django: ΠΏΠΎΠ»Π½ΠΎΠ΅ руководство ΠΏΠΎ использованию GitHub

Для создания ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚-ΠΌΠ°Π³Π°Π·ΠΈΠ½Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Django ΠΈ Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠ΄Π° Π½Π° GitHub, Π²Π°ΠΌ понадобится Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ шаги:

1. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Django:

django-admin startproject myshop

2. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Π½ΠΎΠ²ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°:

cd myshop
python manage.py startapp shop

3. ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ для вашСго ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚-ΠΌΠ°Π³Π°Π·ΠΈΠ½Π° Π² Ρ„Π°ΠΉΠ»Π΅ models.py Π²Π½ΡƒΡ‚Ρ€ΠΈ прилоТСния:

from django.db import models

class Product(models.Model):
    name = models.CharField(max_length=255)
    description = models.TextField()
    price = models.DecimalField(max_digits=10, decimal_places=2)

4. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ:

python manage.py migrate

5. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ прСдставлСния (views) ΠΈ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ (templates) для отобраТСния страниц вашСго ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚-ΠΌΠ°Π³Π°Π·ΠΈΠ½Π°:

from django.shortcuts import render
from .models import Product

def product_list(request):
    products = Product.objects.all()
    return render(request, 'shop/product_list.html', {'products': products})

6. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ URL-ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚Ρ‹ для Π²Π°ΡˆΠΈΡ… прСдставлСний Π² Ρ„Π°ΠΉΠ»Π΅ urls.py Π²Π½ΡƒΡ‚Ρ€ΠΈ прилоТСния:

from django.urls import path
from . import views

urlpatterns = [
    path('products/', views.product_list, name='product_list'),
]

7. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ шаблон (template) для страницы со списком ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ² Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΏΠ°ΠΏΠΊΠΈ templates/shop:

<html>
<head>
    <title>Product List</title>
</head>
<body>
    <h1>Product List</h1>
    <ul>
        {% for product in products %}
        <li>{{ product.name }} - {{ product.price }}</li>
        {% endfor %}
    </ul>
</body>
</html>

8. Π—Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚Π΅ ваш ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π½Π° GitHub:

git init
git remote add origin https://github.com/your-username/myshop.git
git add .
git commit -m "Initial commit"
git push -u origin master

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρƒ вас Π΅ΡΡ‚ΡŒ базовая структура ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚-ΠΌΠ°Π³Π°Π·ΠΈΠ½Π° с использованиСм Django ΠΈ Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠ΄Π° Π½Π° GitHub. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, Ρ‚Π°ΠΊΡƒΡŽ ΠΊΠ°ΠΊ рСгистрация ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² Π² ΠΊΠΎΡ€Π·ΠΈΠ½Ρƒ ΠΈ ΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½ΠΈΠ΅ Π·Π°ΠΊΠ°Π·ΠΎΠ².

Π”Π΅Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚

Π”ΠΎΠ±Ρ€ΠΎ ΠΏΠΎΠΆΠ°Π»ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΌΠΈΡ€ Geek Shop с использованиСм Django ΠΈ GitHub

ΠŸΡ€ΠΈΠ²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽ тСбя, ΡƒΠ²Π»Π΅Ρ‡Π΅Π½Π½Ρ‹ΠΉ программист! БСгодня ΠΌΡ‹ разбСрСмся, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Geek Shop с использованиСм Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° Django ΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ GitHub. Geek Shop - это ΠΎΠ½Π»Π°ΠΉΠ½-ΠΌΠ°Π³Π°Π·ΠΈΠ½, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ спСциализируСтся Π½Π° ΠΏΡ€ΠΎΠ΄Π°ΠΆΠ΅ гиковских Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ², Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Π³Π°Π΄ΠΆΠ΅Ρ‚Ρ‹, ΠΊΠ½ΠΈΠ³ΠΈ, Ρ„ΠΈΠ³ΡƒΡ€ΠΊΠΈ супСргСроСв ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ΅. ΠœΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Django для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π²Π΅Π±-прилоТСния, Π° GitHub для хранСния ΠΈ управлСния ΠΊΠΎΠ΄ΠΎΠΌ.

Π¨Π°Π³ 1: Установка ΠΈ настройка Django

ΠŸΠ΅Ρ€Π²Ρ‹ΠΌ шагом являСтся установка Django. Для этого Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

pip install django

ПослС установки Django создайтС Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ:

django-admin startproject geekshop

ПослС создания ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π² Π΅Π³ΠΎ ΠΊΠΎΡ€Π½Π΅Π²ΡƒΡŽ ΠΏΠ°ΠΏΠΊΡƒ ΠΈ запуститС ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ:

python manage.py migrate

Π¨Π°Π³ 2: Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ прилоТСния для ΠΌΠ°Π³Π°Π·ΠΈΠ½Π°

Для создания прилоТСния для ΠΌΠ°Π³Π°Π·ΠΈΠ½Π° Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

python manage.py startapp shop

Π”Π°Π»Π΅Π΅, Π΄ΠΎΠ±Π°Π²ΠΈΠΌ созданноС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² список установлСнных ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² Ρ„Π°ΠΉΠ»Π΅ settings.py:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'shop',  # Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ это ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅
]

Π¨Π°Π³ 3: Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π΄Π°Π½Π½Ρ‹Ρ…

ΠœΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ модСль Π΄Π°Π½Π½Ρ‹Ρ… для хранСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°Ρ…, Π·Π°ΠΊΠ°Π·Π°Ρ… ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΡ… Π² нашСй Geek Shop. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Ρ„Π°ΠΉΠ» models.py Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΏΠ°ΠΏΠΊΠΈ прилоТСния shop ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ:

from django.db import models

class Category(models.Model):
    name = models.CharField(max_length=255)

class Product(models.Model):
    category = models.ForeignKey(Category, on_delete=models.CASCADE)
    name = models.CharField(max_length=255)
    price = models.DecimalField(max_digits=10, decimal_places=2)
    description = models.TextField()

class Order(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    products = models.ManyToManyField(Product)

Π¨Π°Π³ 4: Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΎΠ² ΠΈ прСдставлСний

ΠœΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚Ρ‹ ΠΈ прСдставлСния для нашСго ΠΌΠ°Π³Π°Π·ΠΈΠ½Π°. Π’ Ρ„Π°ΠΉΠ»Π΅ urls.py вашСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄:

from django.urls import path
from shop import views

urlpatterns = [
    path('', views.home, name='home'),
    path('products/', views.product_list, name='product_list'),
    path('product//', views.product_detail, name='product_detail'),
    path('cart/', views.cart, name='cart'),
    path('order/', views.order, name='order'),
]

Π’Π΅ΠΏΠ΅Ρ€ΡŒ создайтС Ρ„Π°ΠΉΠ» views.py Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΏΠ°ΠΏΠΊΠΈ прилоТСния shop ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ прСдставлСния:

from django.shortcuts import render

def home(request):
    return render(request, 'shop/home.html')

def product_list(request):
    products = Product.objects.all()
    return render(request, 'shop/product_list.html', {'products': products})

def product_detail(request, product_id):
    product = Product.objects.get(id=product_id)
    return render(request, 'shop/product_detail.html', {'product': product})

def cart(request):
    return render(request, 'shop/cart.html')

def order(request):
    if request.method == 'POST':
        # ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π·Π°ΠΊΠ°Π·Π°
        return render(request, 'shop/order.html')
    else:
        return render(request, 'shop/cart.html')

Π¨Π°Π³ 5: Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ шаблонов ΠΈ статичСских Ρ„Π°ΠΉΠ»ΠΎΠ²

Π’Π΅ΠΏΠ΅Ρ€ΡŒ создайтС ΠΏΠ°ΠΏΠΊΡƒ templates Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΏΠ°ΠΏΠΊΠΈ прилоТСния shop ΠΈ создайтС ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹:

  • home.html: основной шаблон для домашнСй страницы ΠΌΠ°Π³Π°Π·ΠΈΠ½Π°;
  • product_list.html: шаблон для отобраТСния списка всСх ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ²;
  • product_detail.html: шаблон для отобраТСния Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π΅;
  • cart.html: шаблон для отобраТСния ΠΊΠΎΡ€Π·ΠΈΠ½Ρ‹ с Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹ΠΌΠΈ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°ΠΌΠΈ;
  • order.html: шаблон для отобраТСния подтвСрТдСния Π·Π°ΠΊΠ°Π·Π°.

Π’Π°ΠΊΠΆΠ΅, создайтС ΠΏΠ°ΠΏΠΊΡƒ static Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΏΠ°ΠΏΠΊΠΈ прилоТСния shop ΠΈ Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π² Π½Π΅Π΅ статичСскиС Ρ„Π°ΠΉΠ»Ρ‹, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ CSS-стили ΠΈ изобраТСния.

Π¨Π°Π³ 6: Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ рСпозитория Π½Π° GitHub

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° нашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π³ΠΎΡ‚ΠΎΠ²ΠΎ, Π΄Π°Π²Π°ΠΉΡ‚Π΅ создадим Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Π½Π° GitHub для хранСния ΠΈ управлСния ΠΊΠΎΠ΄ΠΎΠΌ. Π—Π°ΠΉΠ΄ΠΈΡ‚Π΅ Π½Π° сайт GitHub ΠΈ создайтС Π½ΠΎΠ²Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ с ΠΈΠΌΠ΅Π½Π΅ΠΌ "geek-shop".

ПослС создания рСпозитория, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ²ΡΠ·Π°Ρ‚ΡŒ ваш ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ с Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅ΠΌ Π½Π° GitHub:

git init
git remote add origin https://github.com/[ваш_логин]/geek-shop.git
git add .
git commit -m 'Initial commit'
git push -u origin master

Π¨Π°Π³ 7: Π”Π΅ΠΏΠ»ΠΎΠΉ Π½Π° сСрвСр

НаконСц, Π΄Π°Π²Π°ΠΉΡ‚Π΅ Ρ€Π°Π·Π²Π΅Ρ€Π½Π΅ΠΌ нашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° сСрвСрС. Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡƒ Heroku. Π§Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Heroku, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹:

heroku create
git push heroku master
heroku run python manage.py migrate

Π’Π΅ΠΏΠ΅Ρ€ΡŒ вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Geek Shop ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΠΎ Π½Π° Heroku ΠΈ доступно ΠΏΠΎ ссылкС, прСдоставлСнной Heroku.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

ΠŸΠΎΠ·Π΄Ρ€Π°Π²Π»ΡΡŽ, Ρ‚Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ создал свою ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ Geek Shop с использованиСм Django ΠΈ GitHub. ΠœΡ‹ ΠΏΠΎΠΊΡ€Ρ‹Π»ΠΈ всС основныС шаги, ΠΎΡ‚ установки Django ΠΈ создания ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ Π΄Π°Π½Π½Ρ‹Ρ… Π΄ΠΎ настройки ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΎΠ² ΠΈ прСдставлСний, создания шаблонов ΠΈ статичСских Ρ„Π°ΠΉΠ»ΠΎΠ², Π° Ρ‚Π°ΠΊΠΆΠ΅ развСртывания прилоТСния Π½Π° Heroku. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρ‚Ρ‹ моТСшь ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒ Ρ€Π°Π·Π²ΠΈΠ²Π°Ρ‚ΡŒ свою Geek Shop ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΊ Π½Π΅ΠΉ. Π£Π΄Π°Ρ‡ΠΈ Π² Ρ‚Π²ΠΎΠΈΡ… программистских начинаниях!

Π’ΠΈΠ΄Π΅ΠΎ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅

Upload your Django project to GitHub - The Easy Way

Git and Github.com For Django - Python Django Dentist Website #11

Git Branch Merge | Django Project | djblogger | 19

ΠŸΠΎΡ…ΠΎΠΆΠΈΠ΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ:

πŸ€“ Магазин Π³ΠΈΠΊΠΎΠ² Π½Π° Django: ΠΏΠΎΠ»Π½ΠΎΠ΅ руководство ΠΏΠΎ использованию GitHub

Π”ΠΆΠ°Π½Π³ΠΎ: ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° email