diff --git a/.github/list_languages b/.github/list_languages
new file mode 100755
index 00000000000..5bc27d43f0c
--- /dev/null
+++ b/.github/list_languages
@@ -0,0 +1,20 @@
+#!/usr/bin/env python3
+
+import json
+import os
+from pathlib import Path
+
+
+def main():
+ directory = Path(__file__).absolute().parent.parent
+ languages = sorted(x.name for x in directory.iterdir()
+ if x.is_dir() and len(x.name) == 2 and x.name != 'en')
+
+ if 'GITHUB_ACTION' in os.environ:
+ print(f'::set-output name=languages::{json.dumps(languages[:2])}')
+ for language in languages[:2]:
+ print(language)
+
+
+if __name__ == '__main__':
+ main()
diff --git a/.github/workflows/translations.yml b/.github/workflows/translations.yml
new file mode 100644
index 00000000000..a1c52ae845b
--- /dev/null
+++ b/.github/workflows/translations.yml
@@ -0,0 +1,52 @@
+name: Update translations
+
+on:
+ workflow_dispatch:
+ schedule:
+ - cron: '4 4 * * 0'
+
+env:
+ GIT_AUTHOR_NAME: Django Girls Automation
+ GIT_AUTHOR_EMAIL: automation@theforeman.org
+
+jobs:
+ list_languages:
+ name: List languages
+ runs-on: ubuntu-latest
+ if: github.repository_owner == 'ekohl'
+ outputs:
+ languages: ${{ steps.set_list.outputs.languages }}
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v2
+ - name: Set the language list
+ id: set_list
+ run: ./.github/list_languages
+
+ update_language:
+ name: 'Update ${{ matrix.language }} translations from Crowdin'
+ needs: list_languages
+ if: ${{ needs.list_languages.outputs.languages != '[]' }}
+ runs-on: ubuntu-latest
+ strategy:
+ fail-fast: false
+ matrix:
+ language: ${{ fromJson(needs.list_languages.outputs.languages) }}
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v2
+ - name: Update language
+ run: |
+ wget https://crowdin.com/backend/download/project/django-girls-tutorial/${{ matrix.language }}.zip
+ unzip ${{ matrix.language }}.zip
+ find ${{ matrix.language }} -name '*.md' -delete
+ rsync -av master/${{ matrix.language }}*/* ${{ matrix.language }}/
+ rm -rf ${{ matrix.language }}.zip master
+ - name: Open a PR
+ uses: peter-evans/create-pull-request@v3
+ with:
+ commit-message: "Update ${{ matrix.language }} translations from Crowdin"
+ branch: "update_translations/${{ matrix.language }}"
+ title: "Update ${{ matrix.language }} translations from Crowdin"
+ body: ''
+ delete-branch: true
diff --git a/bg/GLOSSARY.md b/bg/GLOSSARY.md
index 92a2c38234c..e066787b75e 100644
--- a/bg/GLOSSARY.md
+++ b/bg/GLOSSARY.md
@@ -1,3 +1,3 @@
# редактор на код
-Редакторът на код е приложение, което ти позволява да съхраняваш своя код за да можеш да продължиш с него по-късно. Може да научиш откъде да свалиш от [главата Редактор на код](./code_editor/README.md)
\ No newline at end of file
+Редакторът на код е приложение, което ти позволява да съхраняваш своя код за да можеш да продължиш с него по-късно. Може да научиш къде да намериш един от [главата Редактор на код](./code_editor/README.md)
\ No newline at end of file
diff --git a/bg/README.md b/bg/README.md
index 43886769177..c6d374c37b3 100644
--- a/bg/README.md
+++ b/bg/README.md
@@ -6,45 +6,45 @@
## Добре дошли
-Добре дошли в ръководството на Django Girls! Щастливи сме да те видим тук :) Ще те отведем на приключение зад кулисите на уеб-технологиите, като хвърлим бегъл поглед на всичко, което е необходимо за да накараме мрежата да проработи, така както я знаем.
+Добре дошли в ръководството на Django Girls! We are happy to see you here. :) In this tutorial, we will take you on a journey under the hood of web technologies, offering you a glimpse of all the bits and pieces that need to come together to make the web work as we know it.
-Както с всички непознати неща, това може да бъде малко трудно. Но не се притеснявай, вече имаш кураж да бъдеш тука, всичко ще бъде наред :)
+As with all unknown things, this is going to be an adventure - but no worries, since you already worked up the courage to be here, you'll be just fine. :)
## Въведение
-Някога имал ли си чувтвото, че светът е свързан все повече и повече с технологиите и ти не си още част от него? Чудил ли си се как да създадеш уеб-сайт, но никога си нямал достатъчно мотивация да започнеш? Струвало ли ти се, че светът на софтуера е прекалено сложен за да започнеш да правиш нещо сам?
+Чувстваше ли някога, че светът все повече е свързан с технологиите, а ти оставаш в сянка? Мислеше как да създадеш уеб-сайт, но никога нямаше достатъчно мотивация да започнеш? Струвало ли ти се, че светът на софтуера е прекалено труден за теб да започнеш да правиш нещо сама?
-Имаме добра новина за теб! Програмиране не е толкова трудно, колкото изглежда, и ние искаме да ти покажем колко лесно може да бъде това.
+Имаме добра новина за теб! Програмирането не е толкова трудно, колкото изглежда, и ние искаме да ти покажем колко забавно може да бъде то.
-Това ръководство няма магически да те превърне в програмист. Ако искаш да си добър ще ти трябват месеци или даже години учене и упражняване. Но ние искаме да покажем, че програмиране или създаване на уеб-сайтове не е толкова сложно, колкото изглежда. Ще се постараем да обясним в детайли, колкото се може по-добре, за да не се чувстваш уплашен от технологията.
+Това ръководство няма магически да те превърне в програмист. Ако искаш да си добра ще ти трябват месеци или даже години учене и упражняване. Но ние искаме да покажем, че програмирането или създаването на уебсайтове не е толкова сложно, колкото изглежда. Ще се постараем да обясним в детайли, колкото се може по-добре, за да не се чувстваш уплашена от технологиите.
-Надяваме се да те накараме да заобичаш технология толкова, колкото и ние я обичаме!
+Надяваме се да те накараме да заобичаш технологиите толкова, колкото и ние ги обичаме!
## Какво ще научиш от това ръководство?
-След като приключиш с ръководството, ще имаш малко работещо уеб-приложение: твой собствен блог. Ще ти покажем как да го пуснеш в мрежата, така че другите да ти видят работата!
+След като приключиш с ръководството, ще имаш малко работещо уеб-приложение: твоя собствен блог. Ще ти покажем как да го пуснеш в мрежата, така че другите да ти видят работата!
Това ще изглежда (горе-долу) ето така:

-> Ако работиш с ръкводството сам, и нямаш инструктор който да ти помага в случай на някой проблем, имаме чат система за теб: [](https://gitter.im/DjangoGirls/tutorial). Помолихме нашите инструктори и миналите участници да са там от време на време и да помагат на другите с ръководството! Не се страхувай да задаваш въпроси тука!
+> Ако работиш с ръководството сам, и нямаш инструктор който да ти помага в случай на някой проблем, имаме чат система за теб: [](https://gitter.im/DjangoGirls/tutorial). Помолихме нашите инструктори и миналите участници да са там от време на време и да помагат на другите с ръководството! Не се страхувай да задаваш въпроси там!
Добре, [хайде да започнем от начало...](./how_the_internet_works/README.md)
## Следвайки ръководството вкъщи
-Изумително е да си част от занятията на Django Girls, но също разбираме, че не винаги е възможно да присъстваш на някое от тях. Затова ние те насърчаваме да пробваш да следиш ръководството вкъщи. За читатели у дома, понастоящем приготвяме видеа, които ще улеснят следването на ръководството само по себе си. Проектът е все още в процес на обработка, но все повече и повече неща скоро ще бъдат покрити на [Coding is for girls](https://www.youtube.com/channel/UC0hNd2uW8jTR5K3KBzRuG2A/feed) YouTube канал.
+Изумително е да си част от занятията на Django Girls, но също разбираме, че не винаги е възможно да присъстваш. Затова ние те насърчаваме да пробваш да следиш ръководството вкъщи. За читатели у дома, понастоящем приготвяме видеа, които ще улеснят следването на ръководството на вас. Проектът все още е в процес на обработка, но все повече и повече неща ще бъдат разгледани скоро на [Coding is for girls](https://www.youtube.com/channel/UC0hNd2uW8jTR5K3KBzRuG2A/feed) YouTube канал.
-Във всяка вече покрита глава има линк, препращащ към съответното видео.
+Във всяка вече покрита глава има линк, препращащ към правилното видео.
## Относно и допринасяне
-Това ръководство е поддържано от [Django Girls](https://djangogirls.org/). Ако си намерил някакви грешки или искаш да актуализираш ръководството, моля, [следвай насоките за допринасяне](https://github.com/DjangoGirls/tutorial/blob/master/README.md).
+Това ръководство е поддържано от [Django Girls](https://djangogirls.org/). Ако намериш някакви грешки или искаш да актуализираш ръководството, моля, [следвай насоките за допринасяне](https://github.com/DjangoGirls/tutorial/blob/master/README.md).
-## Би ли искал да ни помогнеш да преведем ръководството на друг език?
+## Би ли искала да ни помогнеш да преведем ръководството на друг език?
-Понастоящем, преводите се съхраняват на платформа crowdin.com на този адрес:
+Понастоящем, преводите се съхраняват на платформата crowdin.com по този адрес:
https://crowdin.com/project/django-girls-tutorial
diff --git a/bg/SUMMARY.md b/bg/SUMMARY.md
index c6859e9e51b..7bba63767d5 100644
--- a/bg/SUMMARY.md
+++ b/bg/SUMMARY.md
@@ -8,9 +8,9 @@
* [Виртуална среда](installation/README.md#virtualenv)
* [Django](installation/README.md#django)
* [Git](installation/README.md#git)
- * [GitHub](installation/README.md#github)
- * [PythonAnywhere](installation/README.md#pythonanywhere)
-* [Инсталиране (chromebook)](chromebook_setup/README.md)
+ * [GitHub](installation/README.md#github-account)
+ * [PythonAnywhere](installation/README.md#pythonanywhere-account)
+* [Инсталиране (Chromebook)](chromebook_setup/README.md)
* [Как работи интернет](how_the_internet_works/README.md)
* [Въведение в команден ред](intro_to_command_line/README.md)
* [Инсталиране на Python](python_installation/README.md)
@@ -18,9 +18,9 @@
* [Въведение в Python](python_introduction/README.md)
* [Какво е Django?](django/README.md)
* [Инсталиране на Django](django_installation/README.md)
-* [Вашият първи проект с Django!](django_start_project/README.md)
+* [Твоят първи проект с Django!](django_start_project/README.md)
* [Django модели](django_models/README.md)
-* [Администриране на Django](django_admin/README.md)
+* [Django админ](django_admin/README.md)
* [Внедряване!](deploy/README.md)
* [Django URL адреси](django_urls/README.md)
* [Django изгледи - време за създаване!](django_views/README.md)
diff --git a/bg/chromebook_setup/README.md b/bg/chromebook_setup/README.md
index d21dc1f556d..f6e4ee94c21 100644
--- a/bg/chromebook_setup/README.md
+++ b/bg/chromebook_setup/README.md
@@ -1,5 +1,5 @@
# Настройка на Chromebook
-> **Бележка** Ако вече сте минали през стъпките за инсталиране, няма нужда да правите това отново - можете да прескочите направо към [Въведение в Python](../python_introduction/README.md).
+> **Note** If you already worked through the [installation steps](../installation/README.md), no need to do this again – you can skip straight ahead to [Introduction to Python](../python_introduction/README.md).
{% include "/chromebook_setup/instructions.md" %}
\ No newline at end of file
diff --git a/bg/chromebook_setup/instructions.md b/bg/chromebook_setup/instructions.md
index a9f353d61c7..634a1224600 100644
--- a/bg/chromebook_setup/instructions.md
+++ b/bg/chromebook_setup/instructions.md
@@ -1,17 +1,17 @@
-Можеш да [пропуснеш този раздел](http://tutorial.djangogirls.org/en/installation/#install-python), ако не използваш Chromebook. Ако използвате, опитът ви в инсталацията ще бъде малко по-различен. Можете да игнорирате останалата част от инструкциите за инсталиране.
+Можеш да [пропуснеш този раздел](http://tutorial.djangogirls.org/en/installation/#install-python), ако не използваш Chromebook. Ако използваш, опитът ти в инсталацията ще бъде малко по-различен. Можеш да игнорираш останалата част от инструкциите за инсталиране.
-### Cloud IDE (PaizaCloud Cloud IDE, AWS Cloud9)
+### Cloud IDE (PaizaCloud Cloud IDE, AWS Cloud9, Glitch.com)
-Cloud IDE е инструмент, който ти дава редактор на код и достъп до компютър, работещ с Интернет, където можеш да инсталираш, пишеш и пускаш софтуер. За продължителността на ръководството, cloud IDE ще ти служи като твоя *локална машина*. Все пак ще пишеш команди в терминал, също като твоите съученици на OS X, Ubuntu или Windows, но той ще бъде свързан с компютър, работещ някъде другаде, който cloud IDE прави за теб. Ето инструкциите за cloud IDE (PaizaCloud Cloud IDE, AWS Cloud9). Можете да изберете един от cloud IDE интерфейси и да следвате инструкциите за cloud IDE.
+Облачна IDE е инструмент, която ти дава редактор на код и достъп до компютър, работещ в Интернет, където можеш да инсталираш, да пишеш и да пускаш софтуер. За продължителността на ръководството, облачната IDE ще ти служи като твоя *локална машина*. Все пак ще пишеш команди в терминал, също като твоите съученици на OS X, Ubuntu или Windows, но твоят терминал ще бъде свързан с компютър, работещ някъде другаде, който облачната IDE настройва за теб. Here are the instructions for cloud IDEs (PaizaCloud Cloud IDE, AWS Cloud9, Glitch.com). Можеш да избереш един от облачни IDE интерфейси и да следваш инструкциите за тази облачна IDE.
#### PaizaCloud Cloud IDE
1. Отиди на [PaizaCloud Cloud IDE](https://paiza.cloud/)
2. Направи акаунт
-3. Натисни *New Server* и избери Django приложение
+3. Натисни *New Server* и избери приложението Django
4. Натисни бутон на Терминал (от лявата страна на прозореца)
-Сега трябва да виждаш интерфейс със странична лента, бутони са отляво. Натисни бутона "Terminal" за да ви отвори прозорец със следния надпис:
+Сега трябва да виждаш интерфейс със странична лента, бутоните са отляво. Натисни бутона "Terminal" за да се отвори ето такава подкана:
{% filename %}Terminal{% endfilename %}
@@ -27,47 +27,132 @@ Cloud IDE е инструмент, който ти дава редактор н
1. Инсталирай Cloud 9 от [Chrome web store](https://chrome.google.com/webstore/detail/cloud9/nbdmccoknlfggadpfkmcpnamfnbkmkcp)
2. Отиди на [c9.io](https://c9.io) и натисни *Get started with AWS Cloud9*
3. Регистрирай се за AWS акаунт (изисква информация за кредитна карта, но можеш да го използваш безплатно)
-4. В AWS Dashboard, напиши *Cloud9* в лентата за търсене и натисни
+4. В AWS Dashboard, напиши *Cloud9* в лентата за търсене и я натисни
5. В Cloud 9 таблото, натисни *Create environment*
6. Наречи го *django-girls*
-7. Конфигурирайки настройките, избери *Create a new instance for environment (EC2)* за "Environment Type" и *t2.micro* "Instance type" (трябва да пише "Free-tier eligible."). Настройката за икономия на разходи по подразбиране е добре, също може да запазиш и другите както са по подразбиране.
+7. Конфигурирайки настройките, избери *Create a new instance for environment (EC2)* за "Environment Type" и *t2.micro* "Instance type" (трябва да пише "Free-tier eligible."). Настройката за икономия на разходи по подразбиране е наред и можеш да запазиш останалите по подразбиране.
8. Натисни *Next step*
9. Натисни *Create environment*
-Сега трябва да видите интерфейс със странична лента, голям основен прозорец с малко текст и малък прозорец в долната част, който изглежда като нещо подобно:
+Сега трябва да видиш интерфейс със странична лента, голям основен прозорец с малко текст и малък прозорец в долната част, който да изглежда като нещо подобно:
{% filename %}bash{% endfilename %}
yourusername:~/workspace $
-Тази долна зона е вашият терминал. Можете да използвате терминала за изпращане на инструкции до отдалечения компютър Cloud 9. Можете да промените размера на прозореца, за да го направите малко по-голям.
+Тази долна зона е твоят терминал. Можеш да използваш терминала за изпращане на инструкции до отдалечения компютър Cloud 9. Можеш да промениш размера на прозореца, за да го направиш малко по-голям.
+
+#### Glitch.com Cloud IDE
+
+1. Go to [Glitch.com](https://glitch.com/)
+2. Sign up for an account (https://glitch.com/signup) or use your GitHub account if you have one. (See GitHub instructions below.)
+3. Click *New Project* and choose *hello-webpage*
+4. Click on the Tools dropdown list (at the bottom left side of the window), then on Terminal button to open terminal tab with a prompt like this:
+
+{% filename %}Terminal{% endfilename %}
+
+ app@name-of-your-glitch-project:~
+
+
+When using Glitch.com as your Cloud IDE, you don't have to create a virtual environment. Instead, create the following files manually:
+
+{% filename %}glitch.json{% endfilename %}
+
+```json
+{
+ "install": "pip3 install -r requirements.txt --user",
+ "start": "bash start.sh",
+ "watch": {
+ "throttle": 1000
+ }
+}
+```
+
+{% filename %}requirements.txt{% endfilename %}
+
+ Django~={{ book.django_version }}
+
+
+{% filename %}.bash_profile{% endfilename %}
+
+```bash
+alias python=python3
+alias pip=pip3
+```
+
+{% filename %}start.sh{% endfilename %}
+
+```bash
+chmod 600 .bash_profile
+pip3 install -r requirements.txt --user
+python3 manage.py makemigrations
+python3 manage.py migrate
+python3 manage.py runserver $PORT
+```
+
+Once these files are created, go to the Terminal and execute the following commands to create your first Django project:
+
+{% filename %}Terminal{% endfilename %}
+
+ django-admin.py startproject mysite .
+ refresh
+
+
+In order to see detailed error messages, you can activate Django debug logs for your Glitch application. Simply add the following at the end of the `mysite/settings.py` file.
+
+{% filename %}mysite/settings.py{% endfilename %}
+
+```python
+LOGGING = {
+ 'version': 1,
+ 'disable_existing_loggers': False,
+ 'handlers': {
+ 'file': {
+ 'level': 'DEBUG',
+ 'class': 'logging.FileHandler',
+ 'filename': 'debug.log',
+ },
+ },
+ 'loggers': {
+ 'django': {
+ 'handlers': ['file'],
+ 'level': 'DEBUG',
+ 'propagate': True,
+ },
+ },
+}
+```
+
+This will create a `debug.log` file detailing Django operations and any error messages that might come up, making it much easier to fix if your website does not work.
+
+The initial restarting of the Glitch project should fail. (If you click on the top dropdown button `Show` then click on `In a New Window`, you will receive a `DisallowedHost` error message.) Do not worry about it at this stage, the tutorial will fix this as soon as you update the Django settings of your project in the `mysite/settings.py` file.
### Виртуална среда
-Виртуална среда (наричана още virtualenv) е като частна кутия, в която можем да запълним полезен компютърен код за проект, над който работим. Ние ги използваме, за да държим различните части от код, които искаме за отделните ни проекти, разделени, така че нещата да не се смесват между проектите.
+A virtual environment (also called a virtualenv) is like a private box we can stuff useful computer code into for a project we're working on. We use them to keep the various bits of code we want for our various projects separate so things don't get mixed up between projects.
-Пусни:
+Run:
{% filename %}Cloud 9{% endfilename %}
mkdir djangogirls
cd djangogirls
- python3.6 -mvenv myvenv
+ python3 -m venv myvenv
source myvenv/bin/activate
pip install django~={{ book.django_version }}
-(имайте предвид, че на последния ред използваме тилд, последван от знак за равенство: `~=`).
+(note that on the last line we use a tilde followed by an equal sign: `~=`).
### GitHub
-Направи [GitHub](https://github.com) акаунт.
+Make a [GitHub](https://github.com) account.
### PythonAnywhere
-Урокът за Django Girls включва раздел за това, което се нарича Прехвърляне, което е процесът на приемане на кода, който захранва новото ви уеб приложение и го премества на обществено достъпен компютър (наречен сървър), за да могат другите хора да виждат работата ви.
+The Django Girls tutorial includes a section on what is called Deployment, which is the process of taking the code that powers your new web application and moving it to a publicly accessible computer (called a server) so other people can see your work.
-Тази част е малко странна, когато правим урока в Chromebook, тъй като вече използваме компютър, който е в Интернет (за разлика от, да речем, лаптоп). Въпреки това, все още е полезно, тъй като можем да мислим за работното пространство на Cloud 9 като място за нашата „текуща“ работа и Python Anywhere като място за показване на нашите неща, когато те станат по-завършени.
+This part is a little odd when doing the tutorial on a Chromebook since we're already using a computer that is on the Internet (as opposed to, say, a laptop). However, it's still useful, as we can think of our Cloud 9 workspace as a place for our "in progress" work and Python Anywhere as a place to show off our stuff as it becomes more complete.
-По този начин се регистрирайте за нов акаунт в Python Anywhere на адрес [www.pythonanywhere.com](https://www.pythonanywhere.com).
\ No newline at end of file
+Thus, sign up for a new Python Anywhere account at [www.pythonanywhere.com](https://www.pythonanywhere.com).
\ No newline at end of file
diff --git a/bg/code_editor/README.md b/bg/code_editor/README.md
index 8d3daf476a1..9d3b5025765 100644
--- a/bg/code_editor/README.md
+++ b/bg/code_editor/README.md
@@ -2,10 +2,10 @@
> За читателите у дома: тази глава е разгледана във видеото [Инсталиране на Python & Редактор на код](https://www.youtube.com/watch?v=pVTaqzKZCdA&t=4m43s).
-На път сте да напишете първия си ред код, така че е време да изтеглите редактор на код!
+На път си да напишеш първия си ред на код, така че е време да изтеглиш редактор на код!
-> **Забележка** Ако използвате Chromebook, пропуснете тази глава и се уверете, че следвате инструкциите [Настройка на Chromebook](../chromebook_setup/README.md). Облачният IDE, който сте избрали (PaizaCloud Cloud IDE или AWS Cloud9) включва редактор на код и когато отворите файл във вашия IDE от менюто File, автоматично ще използвате редактора.
+> **Забележка** Ако използваш Chromebook, пропусни тази глава и се увери, че следваш инструкциите [Настройка на Chromebook](../chromebook_setup/README.md). Облачната IDE, която си избрала (PaizaCloud Cloud IDE или AWS Cloud9) включва редактор на код и когато отвориш файл във твоята IDE от менюто File, автоматично ще използваш редактора.
>
-> ** Забележка ** Може да сте направили това по-рано в главата за инсталиране - ако е така, можете да прескочите веднага до следващата глава!
+> **Note** You might have done this earlier in the [Installation chapter](../installation/README.md) – if so, you can skip right ahead to the next chapter!
{% include "/code_editor/instructions.md" %}
\ No newline at end of file
diff --git a/bg/code_editor/instructions.md b/bg/code_editor/instructions.md
index 283b179e98f..aa4c9b9fdc3 100644
--- a/bg/code_editor/instructions.md
+++ b/bg/code_editor/instructions.md
@@ -1,37 +1,37 @@
Има много различни редактори и това до голяма степен се свежда до личните предпочитания. Повечето програмисти на Python използват сложни, но изключително мощни IDE (интегрирани среди за разработка), като PyCharm. Като начинаещ обаче това вероятно е по-малко подходящо; нашите препоръки са еднакво мощни, но много по-прости.
-Нашите предложения са по-долу, но не се колебайте да попитате ментора си какви са техните предпочитания - по-лесно ще получите помощ от тях.
+Нашите предложения са по-долу, но не се колебай да попиташ ментора си какви са техните предпочитания - по-лесно ще получиш помощ от тях.
## Visual Studio Code
-Visual Studio Code е редактор за програмен код, разработен от Microsoft за Windows, Linux и macOS. Той включва поддръжка за отстраняване на грешки, вграден Git контрол, подчертаване на синтаксис, интелигентно попълване на код, фрагменти и рефакторинг на код.
+Visual Studio Code е редактор на изходен код, разработен от Microsoft за Windows, Linux и macOS. Той включва поддръжка за отстраняване на грешки, вграден Git контрол, подчертаване на синтаксис, интелигентно попълване на код, фрагменти и рефакторинг на код.
-[Изтеглете го тук](https://code.visualstudio.com/)
+[Изтегли го тук](https://code.visualstudio.com/)
-## Gedit
+## Gedit
Gedit е безплатен редактор с отворен код, достъпен за всички операционни системи.
-[Изтеглете го тук](https://wiki.gnome.org/Apps/Gedit#Download)
+[Изтегли го тук](https://wiki.gnome.org/Apps/Gedit#Download)
## Sublime Text
-Sublime Text е много популярен редактор с безплатен период за ползване и е достъпен за всички операционни системи.
+Sublime Text е много популярен редактор на код с безплатен период за оценка и е достъпен за всички операционни системи.
-[Изтеглете го тук](https://www.sublimetext.com/)
+[Изтегли го тук](https://www.sublimetext.com/)
-## Atom
+## Atom
Atom е друг популярен редактор. Той е безплатен, с отворен код и се предлага за Windows, OS X и Linux. Atom е разработен от [GitHub](https://github.com/).
-[Изтеглете го тук](https://atom.io/)
+[Изтегли го тук](https://atom.io/)
## Защо инсталираме редактор на код?
-Може би се чудите защо инсталираме този специален софтуер за редактиране на код, вместо да използваме нещо като Word или Notepad.
+Може би се чудиш защо инсталираме този специален софтуер за редактиране на код, вместо да използваме нещо като Word или Notepad.
Първата причина е, че кодът трябва да бъде **обикновен текст**, а проблемът с програми като Word и Textedit е, че те всъщност не произвеждат обикновен текст, те създават богат текст (с шрифтове и форматиране), използвайки персонализирани формати като [RTF (формат на обогатен текст)](https://en.wikipedia.org/wiki/Rich_Text_Format).
-Втората причина е, че редакторите на код са специализирани за редактиране на код, така че те могат да предоставят полезни функции като подчертаване на код с цвят според значението му или автоматично затваряне на кавички.
+Втората причина е, че редакторите на код са специализирани за редактиране на код, така че те могат да предоставят полезни функции като подчертаване на код с цвят според значението му или автоматично затваряне на кавички за теб.
-Ще видим всичко това в действие по-късно. Скоро ще помислите за надеждния си стар редактор на код като за един от любимите си инструменти. :)
+Ще видим всичко това в действие по-късно. Скоро ще помислиш за надеждния си стар редактор на код като за един от любимите си инструменти. :)
\ No newline at end of file
diff --git a/bg/css/README.md b/bg/css/README.md
index f73e52a41be..417eb90c21f 100644
--- a/bg/css/README.md
+++ b/bg/css/README.md
@@ -1,10 +1,10 @@
# CSS - направи го красиво!
-Блогът ни все още изглежда доста грозен, нали? Време е да го направите хубав! За това ще използваме CSS.
+Блогът ни все още изглежда доста грозен, нали? Време е да го направиш хубав! За това ще използваме CSS.
## Какво е CSS?
-Cascading Style Sheets (CSS) е език, използван за описание на външния вид и форматирането на уебсайт, написан на език за маркиране (като HTML). Отнасяйте се към него като грим за вашата уеб страница. ;)
+Cascading Style Sheets (CSS) е език, използван за описание на външния вид и форматирането на уебсайт, написан на език за маркиране (като HTML). Отнасяй се към него като грим за нашата уеб страница. ;)
Но не искаме отново да започнем от нулата, нали? Още веднъж ще използваме нещо, което програмистите пуснаха в интернет безплатно. Преосмислянето на колелото не е забавно.
@@ -12,20 +12,19 @@ Cascading Style Sheets (CSS) е език, използван за описани
Bootstrap е една от най-популярните фреймуорки за HTML и CSS за разработване на красиви уебсайтове: https://getbootstrap.com/
-Той е написан от програмисти, които са работили за Twitter. Сега тя е разработена от доброволци от цял свят!
+Той е написан от програмисти, които са работили за Twitter. Сега той е разработен от доброволци от цял свят!
-## Инсталирайте Bootstrap
+## Инсталирай Bootstrap
-За да инсталирате Bootstrap, отворете вашия файл `.html` в редактора на кода и го добавете в секцията `
`:
+За да инсталираш Bootstrap, отвори твоя `.html` файл в редактора на кода и го добави в секцията ``:
{% filename %}blog/templates/blog/post_list.html{% endfilename %}
```html
-
-
+
```
-Това не добавя никакви файлове към вашия проект. Той просто сочи файлове, които съществуват в Интернет. Затова продължете напред, отворете уебсайта си и актуализирайте страницата. Ето го!
+Това не добавя никакви файлове към твоя проект. То просто сочи файлове, които съществуват в Интернет. Затова продължи напред, отвори уебсайта си и актуализирай страницата. Ето го!

@@ -49,11 +48,11 @@ Django вече знае къде да намери статичните фай
└── mysite
-Django автоматично ще открива всички папки, наречени 'static', в която и да е от папките на вашите приложения. Тогава той ще може да използва тяхното съдържание като статични файлове.
+Django автоматично ще открива всички папки, наречени 'static', в която и да е от папките на вашите приложения. Тогава то ще може да използва тяхното съдържание като статични файлове.
-## Вашият първи CSS файл!
+## Твоят първи CSS файл!
-Нека сега създадем CSS файл, за да добавим свой собствен стил към вашата уеб страница. Създайте нова директория, наречена `css` във вашата `static` директория. След това създайте нов файл, наречен `blog.css` вътре в тази директория `css`. Готови?
+Нека сега създадем CSS файл, за да добавим свой собствен стил към твоята уеб страница. Създай нова директория, наречена `css` във твоята `static` директория. След това създай нов файл, наречен `blog.css` вътре в тази директория `css`. Готова?
djangogirls
└─── blog
@@ -62,13 +61,13 @@ Django автоматично ще открива всички папки, на
└─── blog.css
-Време е да напишете малко CSS! Отворете файла `blog/static/css/blog.css` във вашия редактор на код.
+Време е да напишеш малко CSS! Отвори файла `blog/static/css/blog.css` в твоя редактор на код.
-Тук няма да навлизаме твърде дълбоко в персонализирането и научаването на CSS. Има препоръка за безплатен CSS курс в края на тази страница, ако искате да научите повече.
+Тук няма да навлизаме твърде дълбоко в персонализирането и научаването на CSS. Има препоръка за безплатен CSS курс в края на тази страница, ако искаш да научиш повече.
-Но нека направим поне малко. Може би бихме могли да променим цвета на заглавията си? За да разберат цветовете, компютрите използват специални кодове. Тези кодове започват с `#`, последвани от 6 букви (A–F) и цифри (0–9). Например кодът за синьо е `#0000FF`. Можете да намерите цветовите кодове за много от цветовете тук: http://www.colorpicker.com/. Можете също така да използвате [предварително определени цветове](http://www.w3schools.com/colors/colors_names.asp), като ` red ` и ` green `.
+Но нека направим поне малко. Може би бихме могли да променим цвета на заглавията ни? За да разберат цветовете, компютрите използват специални кодове. Тези кодове започват с `#`, последвани от 6 букви (A–F) и цифри (0–9). Например кодът за синьо е `#0000FF`. Можеш да намериш цветовите кодове за много от цветовете тук: http://www.colorpicker.com/. Можеш също така да използваш [предварително определени цветове](http://www.w3schools.com/colors/colors_names.asp), като `red` и `green`.
-Във вашия `blog/static/css/blog.css` файл трябва да добавите следния код:
+Във твоя `blog/static/css/blog.css` файл трябва да добавиш следния код:
{% filename %}blog/static/css/blog.css{% endfilename %}
@@ -79,17 +78,17 @@ h1 a, h2 a {
```
-`h1 a` е CSS селектор. Това означава, че прилагаме стиловете си към всеки `a` елемент вътре в елемент `h1`; селекторът `h2 a` прави същото за елементи `h2`. Така че, когато имаме нещо като `
`, ще се прилага стилът `h1 a`. В този случай ние му казваме да промени цвета си на `#C25100`, което е тъмно оранжево. Или можете да поставите свой собствен цвят тук, но се уверете, че той има добър контраст на бял фон!
+`h1 a` е CSS селектор. Това означава, че прилагаме стиловете си към всеки `a` елемент вътре в елемент `h1`; селекторът `h2 a` прави същото за елементи `h2`. Така че, когато имаме нещо като `
+
{% endfor %}
```
-ОК, запазете файла и актуализирайте сайта!
+ОК, запази файла и актуализирай сайта!

@@ -150,11 +149,11 @@ body {
}
```
-Добавете това към вашия CSS, запишете файла и вижте как работи!
+Добави това към твоя CSS, запиши файла и виж как работи!

-Може би можем да персонализираме шрифта в заглавието ни? Поставете това във вашия `` в `blog/templates/blog/post_list.html` файл:
+Може би можем да персонализираме шрифта в заглавието ни? Постави това в твоя `` в `blog/templates/blog/post_list.html` файл:
{% filename %}blog/templates/blog/post_list.html{% endfilename %}
@@ -162,9 +161,9 @@ body {
```
-Както и преди, проверете поръчката и поставете преди връзката към `blog/static/css/blog.css`. Този ред ще импортира шрифт, наречен *Lobster* от Google Fonts (https://www.google.com/fonts).
+Както и преди, провери поръчката и постави преди връзката към `blog/static/css/blog.css`. Този ред ще импортира шрифт, наречен *Lobster* от Google Fonts (https://www.google.com/fonts).
-Намерете блока за деклариране `h1 a` (кодът между скобите `{` и `}`) в CSS файла `blog/static/css/blog.css`. Сега добавете ред `font-family: 'Lobster';` между скобите и актуализирайте страницата:
+Намери блока за деклариране `h1 a` (кодът между скобите `{` и `}`) в CSS файла `blog/static/css/blog.css`. Сега добави ред `font-family: 'Lobster';` между скобите и актуализирай страницата:
{% filename %}blog/static/css/blog.css{% endfilename %}
@@ -179,31 +178,33 @@ h1 a, h2 a {
Страхотно!
-Както бе споменато по-горе, CSS има концепция за класове. Те ви позволяват да назовете част от HTML кода и да приложите стилове само към тази част, без да засягате други части. Това може да бъде супер полезно! Може би имате два divs (участъка), които правят нещо различно (като заглавието и публикацията ви). Един клас може да ви помогне да ги направите да изглеждат различно.
+Както бе споменато по-горе, CSS има концепция за класове. Те ви позволяват да назовете част от HTML кода и да приложите стилове само към тази част, без да засягате другите. Това може да бъде супер полезно! Може би имаш два div (от division, разделяне), които правят нещо различно (като заглавието и публикацията ти). Един клас може да ти помогне да ги накараш да изглеждат различно.
-Продължете и дайте име на някои части от HTML кода. Добавете клас, наречен `page-header`, към вашия `div`, който съдържа заглавието ви, като този:
+Go ahead and name some parts of the HTML code. Replace the `header` that contains your header with the following:
{% filename %}blog/templates/blog/post_list.html{% endfilename %}
```html
-
+
```
-И сега добавете клас `post` към вашия `div` съдържащ публикация в блог.
+И сега добави клас `post` към твоя `article` съдържащ публикация в блог.
{% filename %}blog/templates/blog/post_list.html{% endfilename %}
```html
-
+
```
-Запазете тези файлове и актуализирайте уебсайта си.
+Запази тези файлове и актуализирай уебсайта си.

-Ура! Изглежда страхотно, нали? Вижте кода, който току-що поставихме, за да намерите местата, където добавихме класове в HTML и ги използвахме в CSS. Къде бихте направили промяната, ако искате датата да е тюркоазена?
+Ура! Изглежда страхотно, нали? Виж кода, който току-що поставихме, за да намериш местата, където добавихме класове в HTML и ги използвахме в CSS. Къде би направила промяната, ако искаш датата да е тюркоазена?
-Не се страхувайте да се поинтересувате с този CSS малко и се опитайте да промените някои неща. Играта с CSS може да ви помогне да разберете какво правят различните неща. Ако счупите нещо, не се притеснявайте - винаги можете да го отмените!
+Не се страхувай да се поинтересуваш с този CSS малко и се опитай да промениш някои неща. Играта с CSS може да ти помогне да разбереш какво правят различните неща. Ако счупиш нещо, не се притеснявай - винаги можеш да го отмениш!
-Наистина препоръчваме да вземете безплатните онлайн курсове "Basic HTML & HTML5" и "Basic CSS" на [freeCodeCamp](https://learn.freecodecamp.org/). Те могат да ви помогнат да научите всичко за правенето на уебсайтовете ви по-красиви с HTML и CSS.
+Наистина препоръчваме да вземеш безплатните онлайн курсове "Basic HTML & HTML5" и "Basic CSS" на [freeCodeCamp](https://learn.freecodecamp.org/). Те могат да ти помогнат да научиш всичко за правенето на уебсайтовете ти по-красиви с HTML и CSS.
-Готови ли сте за следващата глава?! :)
\ No newline at end of file
+Готова ли си за следващата глава?! :)
\ No newline at end of file
diff --git a/bg/deploy/README.md b/bg/deploy/README.md
index bebe6f91009..d881f0b894d 100644
--- a/bg/deploy/README.md
+++ b/bg/deploy/README.md
@@ -1,8 +1,8 @@
# Внедряване!
-> **Забележка** Следващата глава понякога може да бъде малко трудна за преминаване. Продължете и я завършете; внедряването е важна част от процеса на разработване на уебсайтове. Тази глава е поставена в средата на урока, така че вашият ментор да ви помогне с малко по-сложния процес на вдигане на уебсайта ви онлайн. Това означава, че все още можете да завършите урока самостоятелно, ако ви липсва време.
+> **Забележка** Следващата глава понякога може да бъде малко трудна за преминаване. Продължи и я завърши; внедряването е важна част от процеса на разработване на уебсайтове. Тази глава е поставена в средата на ръководството, така че твоят ментор да ти помогне с малко по-сложния процес на вдигане на уебсайта ти онлайн. Това означава, че все още можеш да завършиш ръководството самостоятелно, ако ти липсва време.
-Досега вашият уебсайт беше достъпен само на вашия компютър. Сега ще научите как да го прехвърлите в онлайн пространството! Разгръщането е процесът на публикуване на приложението ви в Интернет, така че хората най-накрая да могат да отидат и да видят приложението ви. :)
+Досега твоят уебсайт беше достъпен само на твоя компютър. Сега ще научите как да го прехвърлите в онлайн пространството! Разгръщането е процесът на публикуване на приложението ви в Интернет, така че хората най-накрая да могат да отидат и да видят приложението ви. :)
Както научихте, уебсайт трябва да бъде разположен на сървър. В интернет има много доставчици на сървъри, ще използваме [PythonAnywhere](https://www.pythonanywhere.com/). PythonAnywhere е безплатен за малки приложения, които нямат твърде много посетители, така че определено засега ще ви бъде достатъчно.
@@ -12,7 +12,7 @@
# Git
-> **Забележка** Ако вече сте направили стъпките за инсталиране, няма нужда да правите това отново - можете да преминете към следващия раздел и да започнете да създавате вашето Git хранилище.
+> **Note** If you already did the [installation steps](../installation/README.md), there's no need to do this again – you can skip to the next section and start creating your Git repository.
{% include "/deploy/install_git.md" %}
@@ -32,32 +32,75 @@ Git проследява промените в определен набор о
Инициализирането на git хранилището е нещо, което трябва да направим само веднъж за всеки проект (и няма да се налага да въвеждате отново потребителското име и имейла).
-Git ще проследи промените във всички файлове и папки в тази директория, но има някои файлове, които искаме да игнорира. Правим това чрез създаване на файл, наречен `.gitignore` в основната директория. Отворете редактора си и създайте нов файл със следното съдържание:
+### Adjusting your branch name
+
+If the version of Git that you are using is older than **2.28**, you will need to change the name of your branch to "main". To determine the version of Git, please enter the following command:
+
+{% filename %}command-line{% endfilename %}
+
+ $ git --version
+ git version 2.xx...
+
+
+Only if the second number of the version, shown as "xx" above, is less than 28, will you need to enter the following command to rename your branch. If it is 28 or higher, please continue to "Ignoring files". As in "Initializing", this is something we need to do only once per project, as well as only when your version of Git is less than 2.28:
+
+{% filename %}command-line{% endfilename %}
+
+ $ git branch -M main
+
+
+### Ignoring files
+
+Git will track changes to all the files and folders in this directory, but there are some files we want it to ignore. We do this by creating a file called `.gitignore` in the base directory. Open up your editor and create a new file with the following contents:
{% filename %}.gitignore{% endfilename %}
+ # Python
*.pyc
*~
- /.vscode
__pycache__
- myvenv
+
+ # Env
+ .env
+ myvenv/
+ venv/
+
+ # Database
db.sqlite3
- /static
+
+ # Static folder at project root
+ /static/
+
+ # macOS
+ ._*
.DS_Store
+ .fseventsd
+ .Spotlight-V100
+
+ # Windows
+ Thumbs.db*
+ ehthumbs*.db
+ [Dd]esktop.ini
+ $RECYCLE.BIN/
+
+ # Visual Studio
+ .vscode/
+ .history/
+ *.code-workspace
-И го запишете като `.gitignore` в папката "djangogirls".
+And save it as `.gitignore` in the "djangogirls" folder.
-> **Забележка** Точката в началото на името на файла е важна! Ако имате проблеми с създаването му (Macs не харесва да създавате файлове, които започват с точка чрез Finder, например), след това използвайте функцията "Save As" в редактора си; това е бронеустойчиво. И не забравяйте да добавите `.txt`, `.py` или друго разширение към името на файла - той ще бъде разпознат от Git само ако името е просто `.gitignore`.
+> **Забележка** Точката в началото на името на файла е важна! Ако имате проблеми с създаването му (Macs не харесва да създавате файлове, които започват с точка чрез Finder, например), след това използвайте функцията "Save As" в редактора си; това е бронеустойчиво. И не забравяйте да добавите `.txt`, `.py` или друго разширение към името на файла - той ще бъде разпознат от Git само ако името е просто `.gitignore`. Linux и MacOS взимат файловете с име, което започва с `.` (като `.gitignore`) за скрити и нормалната команда `ls` няма да показва тези файлове. Вместо това използвайте `ls -a`, за да видите файла `.gitignore`.
>
> **Забележка** Един от файловете, които сте посочили във вашия `.gitignore` файл е `db.sqlite3`. Този файл е вашата локална база данни, където се съхраняват всички ваши потребители и публикации. Ще следваме стандартната практика за уеб програмиране, което означава, че ще използваме отделни бази данни за вашия локален тестващ сайт и вашия уеб сайт на живо в PythonAnywhere. Базата данни на PythonAnywhere може да бъде SQLite, като вашата разработваща машина, но обикновено ще използвате такава, наречена MySQL, която може да се справи с много повече посетители на сайта, отколкото SQLite. Така или иначе, като игнорирате вашата SQLite база данни за копието на GitHub, това означава, че всички публикувани досега публикации и superuser ще бъдат достъпни само локално и ще трябва да създавате нови в производството. Трябва да мислите за вашата локална база данни като за добра площадка, където можете да тествате различни неща и да не се страхувате, че ще изтриете истинските си публикации от блога.
-Добра идея е да използвате команда `git status` преди `git add` или винаги, когато се окажете несигурни какво се е променило. Това ще ви помогне да предотвратите появата на изненади, като например добавяне или поемане на грешни файлове. Командата `git status` връща информация за всички непроследени/модифицирани/поетапни файлове, състоянието на клона и много други. Изходът трябва да бъде подобен на следното:
+It's a good idea to use a `git status` command before `git add` or whenever you find yourself unsure of what has changed. This will help prevent any surprises from happening, such as wrong files being added or committed. The `git status` command returns information about any untracked/modified/staged files, the branch status, and much more. The output should be similar to the following:
{% filename %}command-line{% endfilename %}
$ git status
- On branch master
+ On branch main
No commits yet
@@ -73,11 +116,11 @@ Git ще проследи промените във всички файлове
nothing added to commit but untracked files present (use "git add" to track)
-И накрая спестяваме промените си. Отидете на конзолата си и изпълнете следните команди:
+And finally we save our changes. Go to your console and run these commands:
{% filename %}command-line{% endfilename %}
- $ git add --all .
+ $ git add .
$ git commit -m "My Django Girls app, first commit"
[...]
13 files changed, 200 insertions(+)
@@ -88,29 +131,29 @@ Git ще проследи промените във всички файлове
## Избутване на кода ви към GitHub
-Отидете на [GitHub.com](https://www.github.com) и се регистрирайте за нов безплатен потребителски акаунт. (Ако вече сте го направили в подготвителната работилница, това е чудесно!) Не забравяйте да запомните паролата си (добавете я към вашия мениджър на пароли, ако използвате такъв).
+Go to [GitHub.com](https://www.github.com) and sign up for a new, free user account. (If you already did that in the workshop prep, that is great!) Be sure to remember your password (add it to your password manager, if you use one).
-След това създайте ново хранилище, като му дадете името "my-first-blog". Оставете квадратчето за „инициализация с README“ отместено, оставете опцията .gitignore празна (направихме това ръчно) и оставете лиценза като None.
+Then, create a new repository, giving it the name "my-first-blog". Leave the "initialize with a README" checkbox unchecked, leave the .gitignore option blank (we've done that manually) and leave the License as None.

> **Забележка** Името `my-first-blog` е важно - бихте могли да изберете нещо друго, но това ще се случва много пъти в инструкциите по-долу и ще трябва да го замествате всеки път. Вероятно е по-лесно да се придържаме към името `my-first-blog`.
-На следващия екран ще се покаже URL за клониране на вашия склад, което ще използвате в някои от следващите команди:
+On the next screen, you'll be shown your repo's clone URL, which you will use in some of the commands that follow:

-Сега трябва да свържем Git хранилището на вашия компютър към това в GitHub.
+Now we need to hook up the Git repository on your computer to the one up on GitHub.
-Въведете следното в конзолата си (заменете `` с потребителското име, което сте въвели, когато сте създали акаунта си в GitHub, но без скобите - URL адресът трябва да съответства на клонирания URL адрес, който току-що видяхте):
+Type the following into your console (replace `` with the username you entered when you created your GitHub account, but without the angle-brackets -- the URL should match the clone URL you just saw).
{% filename %}command-line{% endfilename %}
$ git remote add origin https://github.com//my-first-blog.git
- $ git push -u origin master
+ $ git push -u origin main
-Когато избутате кода към GitHub, ще бъдете попитани за вашето потребителско име и парола за GitHub (било то в прозореца на командния ред или в изскачащ прозорец), а след въвеждане на идентификационни данни трябва да видите нещо подобно:
+When you push to GitHub, you'll be asked for your GitHub username and password (either right there in the command-line window or in a pop-up window), and after entering credentials you should see something like this:
{% filename %}command-line{% endfilename %}
@@ -119,104 +162,20 @@ Git ще проследи промените във всички файлове
Total 3 (delta 0), reused 0 (delta 0)
To https://github.com/ola/my-first-blog.git
- * [new branch] master -> master
- Branch master set up to track remote branch master from origin.
+ * [new branch] main -> main
+ Branch main set up to track remote branch main from origin.
-Кодът ви вече е на GitHub. Отидете и го вижте! Ще откриете, че е в добра компания - [Django](https://github.com/django/django), [Django Girls Tutorial](https://github.com/DjangoGirls/tutorial) и много други страхотни софтуерни проекти с отворен код също са домакини на кода си в GitHub. :)
-
-# Настройване на нашия блог на PythonAnywhere
-
-## Регистрирайте се за акаунт в PythonAnywhere
-
-> **Забележка** Може би вече сте създали акаунт в PythonAnywhere по-рано по време на стъпките за инсталиране - ако е така, няма нужда да го правите отново.
-
-{% include "/deploy/signup_pythonanywhere.md" %}
-
-## Конфигуриране на нашия сайт на PythonAnywhere
-
-Върнете се към главното меню [PythonAnywhere Dashboard](https://www.pythonanywhere.com/), като кликнете върху логото и изберете опцията за стартиране на конзола "Bash" - това е версията на командния ред PythonAnywhere, точно като тази на вашия компютър.
-
-
-
-> **Забележка** PythonAnywhere е базиран на Linux, така че ако сте на Windows, конзолата ще изглежда малко по-различна от тази на вашия компютър.
-
-Внедряването на уеб приложение в PythonAnywhere включва сваляне на кода от GitHub и конфигуриране на PythonAnywhere да го разпознае и да започне да го обслужва като уеб приложение. Има ръчни начини за това, но PythonAnywhere предоставя помощен инструмент, който ще свърши всичко за вас. Нека го инсталираме първо:
-
-{% filename %}PythonAnywhere command-line{% endfilename %}
-
- $ pip3.6 install --user pythonanywhere
-
-
-Това трябва да отпечата някои неща като `Collecting pythonanywhere` и в крайна сметка да завърши с ред, който казва `Successfully installed (...) pythonanywhere- (...)`.
-
-Сега стартираме помощника за автоматично конфигуриране на приложението ви от GitHub. Въведете следното в конзолата на PythonAnywhere (не забравяйте да използвате потребителското си име на GitHub вместо ``, така че URL адресът да съответства на клонираният URL от GitHub):
-
-{% filename %}PythonAnywhere command-line{% endfilename %}
-
- $ pa_autoconfigure_django.py --python=3.6 https://github.com//my-first-blog.git
-
-
-Докато гледате това да работи, ще можете да видите какво прави:
-
-- Изтегляне на вашия код от GitHub
-- Създаване на virtualenv на PythonAnywhere, точно като този на вашия собствен компютър
-- Актуализиране на вашия файл с настройки с някои настройки за внедряване
-- Настройка на база данни на PythonAnywhere с помощта на командата `manage.py migrate`
-- Настройка на статичните ви файлове (за тях ще научим по-късно)
-- И конфигуриране на PythonAnywhere да обслужва вашето уеб приложение чрез неговия API
-
-На PythonAnywhere всички тези стъпки са автоматизирани, но те са същите стъпки, които би трябвало да преминете с всеки друг доставчик на сървъри.
-
-Основното, което трябва да забележите в момента, е, че вашата база данни в PythonAnywhere всъщност е напълно отделена от вашата база данни на вашия собствен компютър, така че може да има различни публикации и администраторски акаунти. В резултат на това, точно както направихме на вашия собствен компютър, трябва да инициализираме администраторския акаунт с `createsuperuser`. PythonAnywhere автоматично активира вашия virtualenv за вас, така че всичко, което трябва да направите, е да стартирате:
-
-{% filename %}PythonAnywhere command-line{% endfilename %}
-
- (ola.pythonanywhere.com) $ python manage.py createsuperuser
-
-
-Въведете данните за вашия администратор потребител. Най-добре е да използвате същите, които използвате на собствения си компютър, за да избегнете объркване, освен ако не искате да направите паролата на PythonAnywhere по-сигурна.
-
-Сега, ако желаете, можете също да разгледате кода си на PythonAnywhere, като използвате `ls`:
-
-{% filename %}PythonAnywhere command-line{% endfilename %}
-
- (ola.pythonanywhere.com) $ ls
- blog db.sqlite3 manage.py mysite requirements.txt static
- (ola.pythonanywhere.com) $ ls blog/
- __init__.py __pycache__ admin.py apps.py migrations models.py
- tests.py views.py
-
-
-Можете също да отидете на страницата „Файлове“ и да се придвижвате наоколо, използвайки вградения файлов браузър на PythonAnywhere. (От страницата на конзолата можете да стигнете до други страници на PythonAnywhere от бутона на менюто в горния десен ъгъл. След като сте на една от страниците, има връзки към другите в горната част.)
-
-## Вече сте на живо!
-
-Сега вашият сайт трябва да бъде на живо в публичния Интернет! Кликнете върху страницата „Уеб“ на PythonAnywhere, за да получите линк към нея. Можете да споделите това с всеки, който искате :)
-
-> **Забележка** Това е урок за начинаещи и при разгръщането на този сайт взехме няколко преки пътища, които не са идеални от гледна точка на сигурността. Ако и когато решите да надградите този проект или да започнете нов проект, трябва да прегледате [контролния списък за разгръщане на Django](https://docs.djangoproject.com/en/2.2/howto/deployment/checklist/) за някои съвети относно осигуряването на вашия сайт.
-
-## Съвети за отстраняване на грешки
-
-Ако видите грешка при изпълнение на скрипта `pa_autoconfigure_django.py`, ето няколко често срещани причини:
-
-- Забравяйки да създадете своя маркер за API на PythonAnywhere API.
-- Грешка в URL адреса ви в GitHub
-- Ако видите грешка, която казва *"Could not find your settings.py"*, вероятно защото не успяхте да добавите всичките си файлове в Git и/или не ги избутахте до GitHub успешно. Погледнете още един път раздела Git по-горе
-- Ако преди това сте се регистрирали за акаунт в PythonAnywhere и имате грешка с collectstatic, вероятно имате по-стара версия на SQLite (например 3.8.2) за вашия акаунт. В такъв случай се регистрирайте за нов акаунт и опитайте командите в секцията PythonAnywhere по-горе.
-
-Ако видите грешка, когато се опитвате да посетите вашия сайт, първото място за търсене на информация за отстраняване на грешки е във вашия **error log**. Ще намерите линк към това на страницата на PythonAnywhere ["Web"](https://www.pythonanywhere.com/web_app_setup/). Вижте дали има съобщения за грешки там; най-новите са най-отдолу.
-
-Също така има някои [общи съвети за отстраняване на грешки на помощния сайт на PythonAnywhere](http://help.pythonanywhere.com/pages/DebuggingImportError).
+Your code is now on GitHub. Go and check it out! You'll find it's in fine company – [Django](https://github.com/django/django), the [Django Girls Tutorial](https://github.com/DjangoGirls/tutorial), and many other great open source software projects also host their code on GitHub. :)
-И не забравяйте, че вашият ментор е тук, за да ви помогне!
+{% include "/deploy/pythonanywhere.md" %}
-# Вижте вашия сайт!
+# Check out your site!
-Страницата по подразбиране за вашия сайт трябва да гласи „It worked!“, точно както прави на вашия локален компютър. Опитайте да добавите `/admin/` в края на URL адреса и ще бъдете отведени до администраторския сайт. Влезте с потребителското име и паролата и ще видите, че можете да добавяте нови публикации на сървъра - не забравяйте, че публикациите от вашата локална база данни за тестове не бяха изпратени във вашия блог на живо.
+The default page for your site should say "It worked!", just like it does on your local computer. Try adding `/admin/` to the end of the URL, and you'll be taken to the admin site. Log in with the username and password, and you'll see you can add new Posts on the server -- remember, the posts from your local test database were not sent to your live blog.
-След като създадете няколко публикации, можете да се върнете към вашата локална настройка (не PythonAnywhere). От тук трябва да работите върху вашата локална настройка, за да направите промени. Това е често срещан работен процес в уеб разработката - правете промени локално, бутате тези промени в GitHub и изтегляте промените надолу към вашия уеб сървър на живо. Това ви позволява да работите и да експериментирате, без да нарушавате уеб сайта си на живо. Доста готино, а?
+Once you have a few posts created, you can go back to your local setup (not PythonAnywhere). From here you should work on your local setup to make changes. This is a common workflow in web development – make changes locally, push those changes to GitHub, and pull your changes down to your live Web server. This allows you to work and experiment without breaking your live Web site. Pretty cool, huh?
-Заслужавате *огромни* похвали! Сървърните внедрения са едни от най-трудните части на уеб разработката и често отнемат на хората няколко дни, преди да ги накарат да работят. Но вие имате своя сайт на живо, в реалния Интернет!
\ No newline at end of file
+Give yourself a *HUGE* pat on the back! Server deployments are one of the trickiest parts of web development and it often takes people several days before they get them working. But you've got your site live, on the real Internet!
\ No newline at end of file
diff --git a/bg/deploy/install_git.md b/bg/deploy/install_git.md
index 2d2a7f75b95..2dff563b6ee 100644
--- a/bg/deploy/install_git.md
+++ b/bg/deploy/install_git.md
@@ -5,14 +5,18 @@ Git е "система за контрол на версиите", използ
-Можете да свалите Git от [git-scm.com](https://git-scm.com/). Можете да натиснете „ next“ на всички стъпки, с изключение на две: в стъпката, където се изисква да изберете вашия редактор, трябва да изберете Nano, и в стъпката, озаглавена „Настройка на вашата PATH среда“, изберете „Използване на Git и незадължителни инструменти на Unix от командния ред на Windows " (най-долната опция). Освен това, настройките по подразбиране са добре. Разгледайте Windows стил, Unix стил за окончанията на редовете е добре.
+Можете да свалите Git от [git-scm.com](https://git-scm.com/). Можеш да натиснеш „next“ на всички стъпки, с изключение на две: в стъпката, където се изисква да избереш твоя редактор, трябва да избереш Nano, и в стъпката, озаглавена „Настройка на вашата PATH среда“, избери "Използване на Git и незадължителни Unix инструменти от командния ред на Windows" (най-долната опция). Освен това, настройките по подразбиране са добре. Разгледайте Windows стил, Unix стил за окончанията на редовете е добре.
-Не забравяйте да рестартирате командния ред или PowerShell, след като инсталацията приключи успешно.
+During installation, if you are presented with the option of "Adjusting the name of the initial branch in new repositories", please choose to "Override the default" and use "main". This will align your installation of Git with the broad direction of the global developer community, and the "main" branch will be used through the remainder of this tutorial. Please see https://sfconservancy.org/news/2020/jun/23/gitbranchname/ and https://github.com/github/renaming for further discussion of this subject.
+
+Do not forget to restart the command prompt or PowerShell after the installation finished successfully.
-Свалете Git от [git-scm.com](https://git-scm.com/) и следвайте инструкцията.
+Download Git from [git-scm.com](https://git-scm.com/) and follow the instructions.
+
+During installation, if you are presented with the option of "Adjusting the name of the initial branch in new repositories", please choose to "Override the default" and use "main". This will align your installation of Git with the broad direction of the global developer community, and the "main" branch will be used through the remainder of this tutorial. Please see https://sfconservancy.org/news/2020/jun/23/gitbranchname/ and https://github.com/github/renaming for further discussion of this subject.
> **Забележка** Ако използвате OS X 10.6, 10.7 или 10.8, ще трябва да инсталирате версията на git от тук: [Инсталатор на Git за OS X Snow Leopard](https://sourceforge.net/projects/git-osx-installer/files/git-2.3.5-intel-universal-snow-leopard.dmg/download)
@@ -27,6 +31,15 @@ data-collapse=true ces-->
$ sudo apt install git
```
+### Adjusting your default branch name
+
+This will align your installation of Git with the broad direction of the global developer community, and the "main" branch will be used through the remainder of this tutorial. Please see https://sfconservancy.org/news/2020/jun/23/gitbranchname/ and https://github.com/github/renaming for further discussion of this subject.
+
+{% filename %}command-line{% endfilename %}
+
+ $ git config --global --add init.defaultBranch main
+
+
$ sudo dnf install git
```
+### Adjusting your default branch name
+
+This will align your installation of Git with the broad direction of the global developer community, and the "main" branch will be used through the remainder of this tutorial. Please see https://sfconservancy.org/news/2020/jun/23/gitbranchname/ and https://github.com/github/renaming for further discussion of this subject.
+
+{% filename %}command-line{% endfilename %}
+
+ $ git config --global --add init.defaultBranch main
+
+
$ sudo zypper install git
```
+### Adjusting your default branch name
+
+This will align your installation of Git with the broad direction of the global developer community, and the "main" branch will be used through the remainder of this tutorial. Please see https://sfconservancy.org/news/2020/jun/23/gitbranchname/ and https://github.com/github/renaming for further discussion of this subject.
+
+{% filename %}command-line{% endfilename %}
+
+ $ git config --global --add init.defaultBranch main
+
+
\ No newline at end of file
diff --git a/bg/deploy/pythonanywhere.md b/bg/deploy/pythonanywhere.md
new file mode 100644
index 00000000000..d3d63ae6ae4
--- /dev/null
+++ b/bg/deploy/pythonanywhere.md
@@ -0,0 +1,88 @@
+# Setting up our blog on PythonAnywhere
+
+## Sign up for a PythonAnywhere account
+
+> **Note** You might have already created a PythonAnywhere account earlier during the install steps – if so, no need to do it again.
+>
+> {% include "/deploy/signup_pythonanywhere.md" %}
+
+
+## Configuring our site on PythonAnywhere
+
+Go back to the main [PythonAnywhere Dashboard](https://www.pythonanywhere.com/) by clicking on the logo, and choose the option to start a "Bash" console – that's the PythonAnywhere version of a command line, just like the one on your computer.
+
+
+
+> **Note** PythonAnywhere is based on Linux, so if you're on Windows, the console will look a little different from the one on your computer. Deploying a web app on PythonAnywhere involves pulling down your code from GitHub, and then configuring PythonAnywhere to recognise it and start serving it as a web application. There are manual ways of doing it, but PythonAnywhere provides a helper tool that will do it all for you. Let's install it first:
+
+{% filename %}PythonAnywhere command-line{% endfilename %}
+```
+$ pip{{ book.pa_py_version }} install --user pythonanywhere
+```
+
+That should print out some things like `Collecting pythonanywhere`, and eventually end with a line saying `Successfully installed (...) pythonanywhere- (...)`.
+
+Now we run the helper to automatically configure our app from GitHub. Type the following into the console on PythonAnywhere (don't forget to use your GitHub username in place of ``, so that the URL matches the clone URL from GitHub):
+
+{% filename %}PythonAnywhere command-line{% endfilename %}
+```
+$ pa_autoconfigure_django.py --python={{ book.pa_py_version }} https://github.com//my-first-blog.git
+```
+
+As you watch that running, you'll be able to see what it's doing:
+
+- Downloading your code from GitHub
+- Creating a virtualenv on PythonAnywhere, just like the one on your own computer
+- Updating your settings file with some deployment settings
+- Setting up a database on PythonAnywhere using the `manage.py migrate` command
+- Setting up your static files (we'll learn about these later)
+- And configuring PythonAnywhere to serve your web app via its API
+
+On PythonAnywhere all those steps are automated, but they're the same steps you would have to go through with any other server provider.
+
+The main thing to notice right now is that your database on PythonAnywhere is actually totally separate from your database on your own computer, so it can have different posts and admin accounts. As a result, just as we did on your own computer, we need to initialize the admin account with `createsuperuser`. PythonAnywhere has automatically activated your virtualenv for you, so all you need to do is run:
+
+{% filename %}PythonAnywhere command-line{% endfilename %}
+```
+(ola.pythonanywhere.com) $ python manage.py createsuperuser
+```
+
+Type in the details for your admin user. Best to use the same ones as you're using on your own computer to avoid any confusion, unless you want to make the password on PythonAnywhere more secure.
+
+Now, if you like, you can also take a look at your code on PythonAnywhere using `ls`:
+
+{% filename %}PythonAnywhere command-line{% endfilename %}
+```
+(ola.pythonanywhere.com) $ ls
+blog db.sqlite3 manage.py mysite requirements.txt static
+(ola.pythonanywhere.com) $ ls blog/
+__init__.py __pycache__ admin.py apps.py migrations models.py
+tests.py views.py
+```
+
+You can also go to the "Files" page and navigate around using PythonAnywhere's built-in file browser. (From the Console page, you can get to other PythonAnywhere pages from the menu button in the upper right corner. Once you're on one of the pages, there are links to the other ones near the top.)
+
+
+## You are now live!
+
+Your site should now be live on the public Internet! Click through to the PythonAnywhere "Web" page to get a link to it. You can share this with anyone you want. :)
+
+
+> **Note** This is a beginners' tutorial, and in deploying this site we've taken a few shortcuts which aren't ideal from a security point of view. If and when you decide to build on this project, or start a new project, you should review the [Django deployment checklist](https://docs.djangoproject.com/en/3.2/howto/deployment/checklist/) for some tips on securing your site.
+
+## Debugging tips
+
+
+If you see an error while running the `pa_autoconfigure_django.py` script, here are a few common causes:
+
+- Forgetting to create your PythonAnywhere API token.
+- Making a mistake in your GitHub URL
+- If you see an error saying *"Could not find your settings.py"*, it's probably because you didn't manage to add all your files to Git, and/or you didn't push them up to GitHub successfully. Have another look at the Git section above
+- If you previously signed up for a PythonAnywhere account and had an error with collectstatic, you probably have an older version of SQLite (eg 3.8.2) for your account. In that case, sign up for a new account and try the commands in the PythonAnywhere section above.
+
+
+If you see an error when you try to visit your site, the first place to look for some debugging info is in your **error log**. You'll find a link to this on the PythonAnywhere ["Web" page](https://www.pythonanywhere.com/web_app_setup/). See if there are any error messages in there; the most recent ones are at the bottom.
+
+There are also some [general debugging tips on the PythonAnywhere help site](http://help.pythonanywhere.com/pages/DebuggingImportError).
+
+And remember, your coach is here to help!
diff --git a/bg/django_admin/README.md b/bg/django_admin/README.md
index 4e013509638..79b7a6e7888 100644
--- a/bg/django_admin/README.md
+++ b/bg/django_admin/README.md
@@ -33,7 +33,7 @@ admin.site.register(Post)
(myvenv) C:\Users\Name\djangogirls> python manage.py createsuperuser
-Когато бъдете подканени, въведете потребителското си име (малки букви, без интервали), имейл адрес и парола. **Не се притеснявайте, че не можете да видите паролата, която въвеждате - така трябва да бъде.** Въведете я и натиснете `enter`, за да продължите. Резултатът трябва да изглежда така (където потребителското име и имейл трябва да са ваши собствени):
+Когато бъдеш подканена, въведи потребителското си име (малки букви, без интервали), имейл адрес и парола. **Не се притеснявайте, че не можете да видите паролата, която въвеждате - така трябва да бъде.** Въведете я и натиснете `enter`, за да продължите. Резултатът трябва да изглежда така (където потребителското име и имейл трябва да са ваши собствени):
Username: ola
Email address: ola@example.com
@@ -46,12 +46,12 @@ admin.site.register(Post)

-Отидете на постове и експериментирайте малко с тях. Добавете пет или шест публикации в блога. Не се притеснявайте за съдържанието - вижда се само на вашия локален компютър - можете да копирате и поставите някакъв текст от този урок, за да спестите време. :)
+Отидете на постове и експериментирайте малко с тях. Добавете пет или шест публикации в блога. Не се притеснявайте за съдържанието - вижда се само на вашия локален компютър - можете да копирате и поставите някакъв текст от това ръководство, за да спестите време. :)
Уверете се, че поне две или три публикации (но не всички) имат зададена дата на публикуване. По-късно ще бъде полезно.

-Ако искате да знаете повече за администратора на Django, трябва да проверите документацията на Django: https://docs.djangoproject.com/en/2.2/ref/contrib/admin/
+If you want to know more about Django admin, you should check Django's documentation: https://docs.djangoproject.com/en/3.2/ref/contrib/admin/
Това вероятно е подходящ момент да вземете кафе (или чай) или нещо за хапване, за да се "заредите". Създадохте първия си модел Django - заслужавате малка почивка!
\ No newline at end of file
diff --git a/bg/django_forms/README.md b/bg/django_forms/README.md
index eca45d6389a..ffbde380d74 100644
--- a/bg/django_forms/README.md
+++ b/bg/django_forms/README.md
@@ -44,53 +44,64 @@ class PostForm(forms.ModelForm):
## Връзка до страницата чрез формата
-Време е да отворим `blog/templates/blog/base.html` в редактора. В `div` наречен `page-header` ще добавим връзка:
+Before we add the link, we need some icons to use as buttons for the link. For this tutorial, download [file-earmark-plus.svg](https://raw.githubusercontent.com/twbs/icons/main/icons/file-earmark-plus.svg) and save it in the folder `blog/templates/blog/icons/`
+
+> Note: To download the SVG image, open the context menu on the link (usually by right-clicking on it) and select "Save link as". In the dialog asking you where to save the file, navigate to the `djangogirls` directory of your Django project, and within that to subdirectory `blog/templates/blog/icons/`, and save the file there.
+
+It's time to open `blog/templates/blog/base.html` in the code editor. Now we can use this icon file inside the base template as follows. In the `div` element inside `header` section, we will add a link before the `h1` element:
{% filename %}blog/templates/blog/base.html{% endfilename %}
```html
-
+
+ {% include './icons/file-earmark-plus.svg' %}
+
```
-Забележете, че искаме да извикаме нашия нов изглед `post_new`. Класът `"glyphicon glyphicon-plus"` е предоставен от темата на bootstrap, която използваме и ще покаже знака плюс.
+Note that we want to call our new view `post_new`. The [SVG icon](https://icons.getbootstrap.com/icons/file-earmark-plus/) is provided by the [Bootstrap Icons](https://icons.getbootstrap.com/) and it will display a page icon with plus sign. We use a Django template directive called `include`. This will inject the file's content into the Django template. The web browser knows how to handle this type of content without any further processing.
+
+> You can download all the Bootstrap icons [here](https://github.com/twbs/icons/releases/download/v1.1.0/bootstrap-icons-1.1.0.zip). Unzip the file and copy all the SVG image files into a new folder inside `blog/templates/blog/` called `icons`. That way you can access an icon like `pencil-fill.svg` using the file path `blog/templates/blog/icons/pencil-fill.svg`
-След добаване на този ред, вашия HTML файл трябва да изглежда ето така:
+After editing the line, your HTML file should now look like this:
{% filename %}blog/templates/blog/base.html{% endfilename %}
```html
{% load static %}
+
Django Girls blog
-
-
+
-
+
-
```
-След запазване и обновяване на страницата http://127.0.0.1:8000 трябва да виждате познатата грешка `NoReverseMatch`. Така ли е? Добре!
+After saving and refreshing the page http://127.0.0.1:8000 you will see a familiar `NoReverseMatch` error. Is that the case? Good!
## URL
-Отваряме файла `blog/urls.py` в редактора и добавяме ред:
+We open `blog/urls.py` in the code editor and add a line:
{% filename %}blog/urls.py{% endfilename %}
@@ -98,12 +109,12 @@ class PostForm(forms.ModelForm):
path('post/new/', views.post_new, name='post_new'),
```
-И последния код трябва да изглежда така:
+And the final code will look like this:
{% filename %}blog/urls.py{% endfilename %}
```python
-from django.urls import path
+from django.urls import path
from . import views
urlpatterns = [
@@ -113,11 +124,11 @@ urlpatterns = [
]
```
-След като обновим сайта виждаме `AttributeError`, тъй като нямаме изглед за изпълнението на `post_new`. Нека го добавим сега.
+After refreshing the site, we see an `AttributeError`, since we don't have the `post_new` view implemented. Let's add it right now.
## post_new изглед
-Време е да отворим файлът `blog/views.py` в редактора и да добавим следните няколко реда от код при останалите във формата
+Time to open the `blog/views.py` file in the code editor and add the following lines with the rest of the `from` rows:
{% filename %}blog/views.py{% endfilename %}
@@ -125,7 +136,7 @@ urlpatterns = [
from .forms import PostForm
```
-И след това нашия изглед:
+And then our *view*:
{% filename %}blog/views.py{% endfilename %}
@@ -135,20 +146,20 @@ def post_new(request):
return render(request, 'blog/post_edit.html', {'form': form})
```
-За да създадем нова форма `Post`, трябва да извикаме `PostForm()` и да я препратим към шаблона (template). Ще се върнем отново на този изглед (view), но сега нека бързо да създадем шаблон (template) за формата.
+To create a new `Post` form, we need to call `PostForm()` and pass it to the template. We will go back to this *view*, but for now, let's quickly create a template for the form.
## Шаблон (Template)
-Трябва да създадем файл `post_edit.html` в директория `blog/templates/blog` и да го отворим в редактора ни за код. За да направим така, че формата да работи са ни нужни няколко неща:
+We need to create a file `post_edit.html` in the `blog/templates/blog` directory, and open it in the code editor. To make a form work we need several things:
* Трябва да покажем формата. Можем да направим това чрез (например) {% raw %}`{{ form.as_p }}`{% endraw %}.
-* Горният ред трябва да бъде обвит с HTML form tag: ``.
+* The line above needs to be wrapped with an HTML form element: ``.
* Трябва ни бутон `Save`. Това правим с HTML button: ``.
* И най-накрая, точно след отварящия `
{% endblock %}
```
-Време е да обновим страницата! Иха! Формата се показа!
+Time to refresh! Yay! Your form is displayed!
-
+
-Но, чакай малко! Когато напишеш нещо в полетата `title` и `text` и се опиташ да го запазиш, какво ще стане?
+But, wait a minute! When you type something in the `title` and `text` fields and try to save it, what will happen?
-Нищо! Пак сме на същата страница и нашият текст изчезна... и няма нова публикация. Какво се обърка?
+Nothing! We are once again on the same page and our text is gone… and no new post is added. So what went wrong?
-Отговорът е: нищо. Трябва още малко да поработим върху нашия изглед (*view*).
+The answer is: nothing. We need to do a little bit more work in our *view*.
## Запазване на формата
-Отворете пак `blog/views.py` в редактора. В момента всичко, което имаме в изгледа на `post_new` е следното:
+Open `blog/views.py` once again in the code editor. Currently all we have in the `post_new` view is the following:
{% filename %}blog/views.py{% endfilename %}
@@ -186,9 +197,9 @@ def post_new(request):
return render(request, 'blog/post_edit.html', {'form': form})
```
-Когато изпратим форматата се връщаме пак на същият изглед, но този път имаме повече данни в запитването (`request`) или по-точно в `request.POST` (наименованието няма нищо общо с блога "post", а с факта, че "публикуваме" информация). Помните ли как в нашия HTML файл при дефинирането на `