πŸ“· Как Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π½Π° сайт Django: ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ руководство с ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ ΠΈ шагами

Π§Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π½Π° сайт Django, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ шаги: 1. Π’ Π½Π°Ρ‡Π°Π»Π΅, ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Ρƒ вас Π΅ΡΡ‚ΡŒ ΠΏΠ°ΠΏΠΊΠ° "media" Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ вашСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Django. Если Π΅Π΅ Π½Π΅Ρ‚, создайтС Π΅Π΅. Π’ этой ΠΏΠ°ΠΏΠΊΠ΅ Π±ΡƒΠ΄ΡƒΡ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌΡ‹Π΅ изобраТСния. 2. Π’ вашСм Ρ„Π°ΠΉΠ»Π΅ `settings.py` ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ настроили ΠΌΠ΅Π΄ΠΈΠ°-ΠΏΡƒΡ‚ΡŒ ΠΈ ΠΌΠ΅Π΄ΠΈΠ°-URL. ΠŸΡ€ΠΈΠΌΠ΅Ρ€: ``` MEDIA_ROOT = os.path.join(BASE_DIR, 'media') MEDIA_URL = '/media/' ``` 3. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ модСль, которая Π±ΡƒΠ΄Π΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ°Ρ…. НапримСр, Π² вашСм Ρ„Π°ΠΉΠ»Π΅ `models.py`: ```python from django.db import models class Image(models.Model): image = models.ImageField(upload_to='images/') ``` 4. ЗапуститС ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ для вашСй ΠΌΠΎΠ΄Π΅Π»ΠΈ: ```python python manage.py makemigrations python manage.py migrate ``` 5. Π’ вашСм HTML-шаблонС, Π³Π΄Π΅ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ, Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄: ```html {% load static %} Π˜Π·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ``` 6. Π’ вашСм прСдставлСнии (view), ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΌ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ, ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚Π΅ ΠΊΠΎΠ΄: ```python from django.shortcuts import render, redirect from .forms import ImageForm def upload_image(request): if request.method == 'POST': form = ImageForm(request.POST, request.FILES) if form.is_valid(): form.save() return redirect('home') else: form = ImageForm() return render(request, 'upload_image.html', {'form': form}) ``` НС Π·Π°Π±ΡƒΠ΄ΡŒΡ‚Π΅ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ `'images/'` Π² ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΈ HTML-шаблонС Π½Π° ΠΏΡƒΡ‚ΡŒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ соотвСтствуСт вашСй структурС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Π£Π΄Π°Ρ‡ΠΈ с Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ Π½Π° ваш сайт Django!

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

Как Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π½Π° сайт Django?

Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΎΠΊ Π½Π° Π²Π΅Π±-сайт с использованиСм Django ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ слоТной Π·Π°Π΄Π°Ρ‡Π΅ΠΉ, Π½ΠΎ Π½Π° самом Π΄Π΅Π»Π΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ простыС способы, Ρ‡Ρ‚ΠΎΠ±Ρ‹ это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрим нСсколько ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² добавлСния ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΎΠΊ Π½Π° сайт Django.

ΠœΠ΅Ρ‚ΠΎΠ΄ 1: ИспользованиС ΠΌΠΎΠ΄Π΅Π»ΠΈ ImageField

Для Π½Π°Ρ‡Π°Π»Π°, ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ настроили Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… Π² Django, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ„Π°ΠΉΠ»Π°Ρ…. Π”Π°Π»Π΅Π΅, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ модСль с ΠΏΠΎΠ»Π΅ΠΌ ImageField, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для хранСния ссылок Π½Π° ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ.

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΌΠΎΠ΄Π΅Π»ΠΈ, которая ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΠΎΠ»Π΅ ImageField с ΠΈΠΌΠ΅Π½Π΅ΠΌ "image":


from django.db import models

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

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»Π΅ ImageField ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ "upload_to", ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ опрСдСляСт ΠΏΡƒΡ‚ΡŒ, ΠΊΡƒΠ΄Π° Π±ΡƒΠ΄ΡƒΡ‚ Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒΡΡ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ эту модСль Π² Ρ„ΠΎΡ€ΠΌΠ΅, Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ ΠΏΠΎΠ»Π΅ Π² вашСй Ρ„ΠΎΡ€ΠΌΠ΅. НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ„ΠΎΡ€ΠΌΡ‹:


from django import forms

class MyForm(forms.Form):
    image = forms.ImageField()

ПослС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²Ρ‹ создали модСль ΠΈ Ρ„ΠΎΡ€ΠΌΡƒ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ ΠΈΡ… Π½Π° страницС HTML. Для этого Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π΅Π³ form ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ‚ΠΈΠΏ поля - "file".

<form method="POST" enctype="multipart/form-data">
    {% csrf_token %}
    {{ form.as_p }}
    <button type="submit">Π—Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ</button>
</form>

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ использовали ΡˆΠ°Π±Π»ΠΎΠ½Π½Ρ‹ΠΉ Ρ‚Π΅Π³ {{ form.as_p }} для отобраТСния ΠΏΠΎΠ»Π΅ΠΉ Ρ„ΠΎΡ€ΠΌΡ‹. Когда ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚ Ρ„Π°ΠΉΠ» ΠΈ Π½Π°ΠΆΠΈΠΌΠ°Π΅Ρ‚ ΠΊΠ½ΠΎΠΏΠΊΡƒ "Π—Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ", Ρ„Π°ΠΉΠ» Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½ Π½Π° сСрвСр ΠΈ связан с ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ ΠΌΠΎΠ΄Π΅Π»ΠΈ.

ΠœΠ΅Ρ‚ΠΎΠ΄ 2: ИспользованиС ΠΏΠ°ΠΊΠ΅Ρ‚Π° django-crispy-forms

Π”Ρ€ΡƒΠ³ΠΎΠΉ способ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ процСсс добавлСния ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π½Π° Π²Π΅Π±-сайт Django - ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚ django-crispy-forms. Π­Ρ‚ΠΎΡ‚ ΠΏΠ°ΠΊΠ΅Ρ‚ прСдоставляСт ΡƒΠ΄ΠΎΠ±Π½Ρ‹Π΅ инструмСнты для создания красивых ΠΈ ΠΎΡ‚Π·Ρ‹Π²Ρ‡ΠΈΠ²Ρ‹Ρ… Ρ„ΠΎΡ€ΠΌ.

Для Π½Π°Ρ‡Π°Π»Π°, установитС ΠΏΠ°ΠΊΠ΅Ρ‚ django-crispy-forms, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

pip install django-crispy-forms

ПослС установки ΠΏΠ°ΠΊΠ΅Ρ‚Π°, Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π² вашСм ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅, Π΄ΠΎΠ±Π°Π²ΠΈΠ² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ Π² Ρ„Π°ΠΉΠ»Π΅ settings.py:


CRISPY_TEMPLATE_PACK = 'bootstrap4'

Π—Π°Ρ‚Π΅ΠΌ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚Π° django-crispy-forms. НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ„ΠΎΡ€ΠΌΡ‹, которая ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΠΎΠ»Π΅ ImageField:


from django import forms
from crispy_forms.helper import FormHelper
from crispy_forms.layout import Submit

class MyForm(forms.Form):
    image = forms.ImageField()

    def __init__(self, *args, **kwargs):
        super(MyForm, self).__init__(*args, **kwargs)
        self.helper = FormHelper()
        self.helper.form_method = 'POST'
        self.helper.add_input(Submit('submit', 'Π—Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ'))

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ использовали Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚Π° django-crispy-forms для создания красивой ΠΈ ΠΎΡ‚Π·Ρ‹Π²Ρ‡ΠΈΠ²ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΡ‹. Когда ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚ Ρ„Π°ΠΉΠ» ΠΈ Π½Π°ΠΆΠΈΠΌΠ°Π΅Ρ‚ ΠΊΠ½ΠΎΠΏΠΊΡƒ "Π—Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ", Ρ„Π°ΠΉΠ» Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½ Π½Π° сСрвСр ΠΈ связан с ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ ΠΌΠΎΠ΄Π΅Π»ΠΈ.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ Π½Π° страницС HTML, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄:

{{ form|crispy }}

Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ автоматичСски ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ Ρ„ΠΎΡ€ΠΌΡƒ, ΡΠΎΠ·Π΄Π°Π½Π½ΡƒΡŽ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠ°ΠΊΠ΅Ρ‚Π° django-crispy-forms, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π²Ρ‹Π±Ρ€Π°Π½Π½ΡƒΡŽ Π²Π°ΠΌΠΈ Π²Π½Π΅ΡˆΠ½ΠΎΡΡ‚ΡŒ.

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

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрСли Π΄Π²Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π° добавлСния ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ Π½Π° Π²Π΅Π±-сайт Django. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ»Π΅ ImageField ΠΌΠΎΠ΄Π΅Π»ΠΈ Django ΠΈΠ»ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚ django-crispy-forms для упрощСния процСсса Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΈ отобраТСния ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ.

ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ вашСго сайта Ρ‚Π°ΠΊΠΆΠ΅ ΠΊΡ€Π°ΠΉΠ½Π΅ Π²Π°ΠΆΠ½Π° ΠΏΡ€ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΎΠΊ. Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π½Π° сторонС сСрвСра, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ Π°Ρ‚Π°ΠΊΠΈ ΠΈ злоупотрСблСния.

Π£Π΄Π°Ρ‡ΠΈ Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ вашСго сайта с Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΎΠΊ Π² Django!

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

Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΎΠΊ (ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ )Π² Django Python

Django 11: Учимся Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ Π½Π° сайт ΠΈ пишСм ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ пост Π² Π½ΠΎΠ²Ρ‹ΠΉ Π±Π»ΠΎΠ³

28 ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ статичСскиС Ρ„Π°ΠΉΠ»Ρ‹. Django Static Files

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

πŸ“· Как Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π½Π° сайт Django: ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ руководство с ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ ΠΈ шагами