Цель лекции: Рассмотреть стиль кодирования на платформе Django; изучить стандартную структуру проекта Django; ознакомиться с системой контроля версий Git и изучить ее основные команды; установка Twitter Bootstrap для быстрой разработки стилей проекта.
Ключевые термины: Django, Python, sublime, сервер, разра-ботка, проект, база, приложение, bootstrap, файл, git, версия
Многие из практических техник Django основываются на Python. Хотя и остаётся шанс, что вы ими владеете, мы все же прервемся и опишем все задокументированные техники, потому что вы должны знать эти концепции перед началом работы. Конечно же, вы можете вернуться к этой главе, и бросить на нее свежий взгляд, когда вы начнете создавать свои проекты.
Для учета стандартных техник, были созданы улучшенные предложения Python, и одной из таких широко распространенных техник для разработки, принятой в сообществе, является PEP8, гид по стилю кода Python – лучший путь стилизовать код Python авторизованный Гидо ван Россумом.
Как сказано в документации, "PEP8 работает согласно семантике и соглашениям, принятым в строках документации Python". Для дальнейшего ознакомления, пожалуйста, посетите http: //legacy.python.org/dev/peps/pep-0008/.
Когда вы пишете код на Python, отступ играет важную роль. Оно выступает в качестве блока в других языках, например, как в C или Perl. Среди программистов всегда идут споры о том, использовать ли где-то табуляцию или пробелы, а если использовать пробелы, то сколько: два, четыре или восемь. Использование 4 пробелов для отступа лучше, чем восемь, а если при этом есть некоторое количество связанных блоков, то восемь пробелов могут помочь разместить на каждой строке больше кода. Но опять же, это выбор программиста.
Следующий фрагмент показывает, к чему ведет неверное использование отступа:
<<< def a(): ... print "foo" ... print "bar" IndentationError: unexpected indent
И что же мы должны использовать? Табуляцию или пробелы?
Выберите что-то одно, но никогда не смешивайте табуляцию и пробелы в одном проекте, иначе это превратится в кошмар для поддержки. Более популярно в Python делать отступы пробелами; табуляция используется в последнюю очередь. Если какой-либо встретившийся вам код использует смесь из табуляции и пробелов, то его следует привести к варианту с пробелами.
Создать правильный отступ – достаточно ли четырех пробелов на уровень отступа?
Много насчет этого существует путаницы, но синтаксис языка Python целиком завязан на отступах. Будем честны: в большинстве случаев, это так. Строго рекомендуется использовать 4 пробела на уровень отступа, а если вы пользуетесь двумя пробелами, то прекратите это делать.
Ничего страшного, конечно же в этом нет, но когда вы будете взаимодействовать со сторонними библиотеками, то на выходе у вас получится сборная солянка из кода, который трудно будет отлаживать.
Теперь об отступах. Когда ваш код располагается в продолжение строки, вы должны растянуть его, выравнивая вертикально. Когда вы используете выступ, первая строка не должна содержать никаких аргументов и дальнейшие отступы должны использоваться для четкого выделения строки как продолжающейся линии.
Выступ (также известный как отрицательный отступ) – стиль отступа, при котором все строки отступают, кроме первой строки абзаца. Предыдущий абзац является примером использования выступа
Следующий фрагмент показывает, как должен правильно использовать метод отступа при написании кода.
bar = some functionname( varfirst, varsecond, varthird, varfourth) # Here indentation of arguments makes them grouped, and stand clear from others. def some function name( varfirst, varsecond, varthird, varfourth): print(varfirst) # This example shows the hanging intent.?
Нас не вдохновляет следующий фрагмент кода, да он и не работает в Python
# When vertical alignment is not used. Arguments on the first line are forbidden foo = somefunctionname(varfirst, varsecond, varthird, varfourth) # Further indentation is required as indentation is not distinguish-able between arguments and source code. def some_function_name( varfirst, varsecond, varthird, varfourth): print(varfirst)
Хотя дополнительные отступы не требуются, но если вы хотите их использовать, чтобы убедиться, что код работает, вы можете использовать следующий стиль кода:
# Extra indentation is not necessary, if (this and that): dosomething()
Важность двух пустых строк и одной пустой строки заключается в следующем:
Импорт пакета является прямым приложением повторного использования кода. Поэтому, всегда строки импорта помещаются в верхней части файла с исходным кодом, сразу же после любого комментария в модуле и строки документа, и перед объявлением глобальных переменных и переменных-констант. Каждая отдельная строка содержит команду для импорта одного модуля.
Лучше всего производить импорт, как показано ниже:
import os import sys
Не рекомендуется вызывать для импорта в одной строке более одного модуля, например:
import sys, os
Вы можете импортировать модули, придерживаясь следующего примера, хотя это на выбор:
from django.http import Http404, HttpResponse
Если ваш импорт получается дольше, то следующий метод поможет объявить их:
from django.http import ( Http404, HttpResponse, HttpResponsePermanentRedirect )
Импортированный пакет может быть сгруппирован следующими способами:
import re import simplejson
from decimal import *
from models import ModelFoo from models import ModelBar
В любом языке программирования и фреймворке есть свое соглашение об именах. В Python/Django оно более или менее схоже, но лучше осветить его здесь. Вам необходимо следовать ему, когда вы присваиваете имена переменным, или даете имена глобальным переменным, называете класс, модуль, и т.д.
Вот так в общих чертах выглядит соглашение об именах, которого мы должны придерживаться:
На рынке много вариантов, если речь идет о редакторах исходного кода. Одни предпочитают полновесные IDE, других устраивают простые текстовые редакторы. Выбор за вами: возьмите то, что вам удобней. Если вы уже используете какую-то программу для работы с исходными файлами Python, то мы полагаем, что вы привыкли к ней и она будет хорошо работать и с Django. С другой стороны, я могу порекомендовать вам такие программы, как:
Настройка вашего проекта с использованием текстового редактора Sublime.
Многие из примеров, написанных для этого курса, написаны с помощью текстового редактора Sublime. В этом разделе мы покажем, как установить и настроить проект Django.
По завершении установки, вы увидите что-то похожее на это:
Гораздо важнее всего Package Control, который является менеджером установки других плагинов прямо изнутри Sublime. Это позволит вам производить ручную установку пакета. Не беспокойтесь о дальнейшей установке пакета.
SublimeCodeIntel: Создана разработчиком SublimeLint. SublimeCodeIntel обладает расширенную функциональность, такую как, определение на ходу, умное дополнение кода и импорт предложений.
Вы можете найти и другие плагины для Sublime для увеличения вашей производительности.
Вы можете использовать одну из ваших любимых IDE для разработки проектов на Django. В этой книге мы используем pycharm. Эта IDE рекомендуется, так как она поможет вам с отладкой, используя точки останова, которые сэкономят вам кучу времени, если что-то пойдет не так.
Вот так можно установить и настроить IDE pycharm для Django:
Структура проекта Django изменилась начиная с вышедшей версии 1.6. Django (Django-admin.py) так же имеет команду startapp для создания приложение. Сейчас самое время объяснить разницу между приложением и проектом Django.
Проект – законченный веб-сайт или приложение, где приложение — это автономное Django-приложение. Приложение основано на принципе, что это должна быть единая вещь и она должна работать.
Дабы облегчить боль разработки проекта на Django с нуля, Django предоставляет возможность автогенерации файлов базовой структуры проекта из какого-либо еще проекта для того, чтобы продвинуть вперед разработку и добавление возможностей.
Таким образом, мы можем сказать, что проект – это собрание приложений, а приложение может быть написано, как отдельная сущность и может быть легко импортирована в проект.
Для создания вашего первого проекта Django, откройте терминал (или командная строка у Windows пользователей; для запуска выполните: Пуск| Выполнить| cmd ) и наберите следующую команду. Затем, нажмите Enter.
$ django-admin.py startproject django_mytweets
Эта команда создает папку с именем django_mytweets в текущем каталоге и создает начальную структуру внутри нее. Посмотрим, что за файлы создались.
Новая структура выглядит следующим образом:
django_mytweets// /django_mytweets/ manage.py
Это содержимое папки django_mytweets/:
django_mytweets/ init .py settings.py urls.py wsgi.py
Вот краткое объяснение, что это за файлы:
Это также означает, что вы можете импортировать сторонние приложения на уровне Django проекта. Этот каталог содержит так же файл manage.py, который содержит так же все настройки проекта.
Дополнительные разъяснения о настройках будут даны, когда мы приступим к изменению настроек.
Давайте взглянем на содержимое файла manage.py:
#!/usr/bin/env python import os import sys
if _name_ == " _main_ ":
os.environ.setdefault("DJANGO_SETTINGS_MODULE",
"django_ mytweets.settings")
from django.core.management import execute
from_command_line execute_from_command_line(sys.argv)
Исходный код файла будет очевидно понятен после того, как вы прочитаете нижеследующее объяснение кода.
#!/usr/bin/env python
В первой строке дается объявление того, что это файл исходного кода на языке Python, далее располагается секция импорта модулей os и sys. Эти модули содержат в основном системные операции.
import os import sys
Следующая часть кода проверяет, является ли файл исполняемым из функции main, которая является первой исполняемой функцией, а затем загружает модуль настроек Django по текущему пути. Так как вы запустили виртуальное окружение, пути всех модулей установятся для данного виртуального окружения.
if name == " _main_" :
os.environ.setdefault("DJANGO_SETTINGS_MODULE",
"django_mytweets.settings")
django_mytweets/ ( Inner folder)
_ init_.py
По умолчанию, база данных настроена на использование базы данных SQLite, которая рекомендуется для тестовых целей. Здесь мы только увидим, как входить в нашу базу данных; также здесь содержатся основные настройки конфигурации, и немного изменив файл manage.py, его можно переместить в другую папку, такую как config или conf.
Чтобы сделать стороннее приложение частью проекта, нужно зарегистрировать его в файле settings.py. Все записи об установленном приложении содержатся в переменной INSTALLED_APPS. По мере разрастания приложения. Им становится трудно управлять; есть три раздела в переменной INSTALLED_APPS, а именно:
Когда мы начнем писать код для нашего приложения, мы создадим новые файлы внутри каталога проекта; потому каталог проекта служит так же и хранилищем для нашего кода.
Теперь, когда мы дали общее представление о структуре проекта Django, давайте настроим нашу систему базы данных.
Лучшая практика – использование контроля версий
Контроль версий – это система, которая запоминает все изменения, которые вы сделали в проектах, и вы сохраняете ваш прогресс. В любой момент вы можете увидеть изменения, сделанные в отдельном файле; за пределами временного периода вы можете обратить эти изменения или отредактировать файл.
Он вносит гораздо больше смысла в проект, у которого несколько участников, главным образом для тех, кто работает над одним и тем же файлом одновременно. Контроль версий – это спасатель жизни, так как он хранит записи о версиях файлов и предоставляет такие возможности, как сохранение с объединением или отменой изменений в любой копии.
Мы будем использовать распределенную систему контроля версий, так что каждый разработчик сможет иметь полную копию проекта (в отличие от подверсий, где репозитории расположены на системном сервере).
Git – это инструмент контроля версий, который мы будем использовать для наших проектов. Это лучший инструмент из доступных, и он тоже относится к разряду open source. Git хорошо работает с разными версиями файлов, такими как файлы исходных кодов, файлы изображений, pdf файлы и т.д. Вы можете скачать Git по следующей ссылке:
Большинство современных IDE имеют встроенную поддержку системы контроля версий; как и PyCharm, для Sublime есть плагин, который может интегрировать Git в рабочий каталог. Git можно запустить с терминала с помощью команды git, и вы можете проверить все существующие варианты ее применения использовав команду git –help.
У нас, разработчиков, есть локальная копия нашего проекта, синхронизируемая с удаленным сервером (часто называемым репозиторием), которая может отправляться на удаленный репозиторий. Когда другой разработчик хочет загрузить изменения на удаленный репозиторий, он сначала загружает изменения. Минимальны шансы на конфликт у центрального репозитория, с которым синхронизирован каждый разработчик. Вся эта работа показана в следующем разделе.
Любой проект может быть отправлен на Git для системы контроля версий и в репозитории Git создается каталог. Для этого, выполните следующие команды:
$git init: В случае, если вы хотите скопировать существующий репозиторий на Git, в случае, когда ваш друг уже хранит проект где-нибудь на GitHub или BitBucket, используйте следующую команду:
$git clone url: URL-адрес удаленного репозитория, например https://github.com/AlienCoders/web-development.git.
Промежуточная область: Промежуточной областью является то место, где все файлы в нее входящие должны быть перечислены перед отправкой. Если вкратце, то промежуточная область необходима как немедленный для исполнения шаг, а не публикация напрямую, потому что, если происходят конфликты, они помечаются в промежуточной области. Файлы могут быть приняты только после разрешения конфликтов.
Давайте взглянем на следующие команды и их использование:
$git add <file-name> или $git add: Добавляет все файлы в промежуточную область.$git status: Используется для того, чтобы узнать статус рабочего каталога, какие были добавлены файлы в него, а какие нет.$git status: Получить статус, что что-то изменилось и отправлено в промежуточную область, или же изменилось и не отправлено туда.$git commit –m: Для применения сделанных изменений, сначала вы должны их добавить в промежуточную область. Затем вы их принимаете с помощью этой команды.$git rm <file-name>: Если вы ошибочно добавили файл в промежуточную область, то с помощью этой команды можете его удалить из нее.$git stash: Git не отслеживает переименование файлов. Другими словами, если вы переименовали файл, помещенный в промежуточную область, то вы должны его снова добавить в промежуточную область, а затем принять. Вы можете сохранить изменения, но в действительности не принимать в репозиторий с помощью этой команды.$git stash apply: Берет все текущие изменения и помещает их в стек. Затем вы можете продолжать работу с учетом ваших изменений. Однажды, когда вы захотите получить сохраненные изменения, воспользуйтесь этой командой.Другая концепция системы контроля версий – это ветви(Git). Ветвь — это как бы путь для сохранения ваших принятых изменений, и по умолчанию, сохранение происходит в главной ветви. Ветвь используется для отслеживания особенностей проекта. Каждая особенность может быть представлена в одной рабочей ветке. Когда особенность полностью готова, ее можно объединить с главной веткой.
Основная работа, которая протекает с ветвями, выглядит следующим образом: вначале вы задаете главную ветвь, и для каждой новой возможности создаете новую ветку. Изменения принимаются в новую ветку, и когда все будет готово с данной возможностью, можно объединить эту ветвь с главной. Это можно представить визуально, как описано далее:
$git branch: Чтобы представить список существующих ветвей через Git, используем данную команду.
$git checkout –b <new-branch-name>: С помощью этой команды может быть создана новая ветвь в существующем репозитории. Мы можем представить, как это будет выглядеть логически с помощью этой блок-схемы:
Вы получите сообщение, уведомляющее вас о том, что вы переключились на новую ветку. Если вы хотите переключиться обратно на старую ветвь, то используйте следующие команды:
$git checkout <old-branch-name>. Вы получите сообщение: Switched to branch <old-branch-name>.$git merge <branch-name>: используя эту команду, вы можете произвести слияние с указанной ветвью. Ваша текущая ветвь объединяется с ветвью <branch-name>. Для синхронизации с откатом изменений назад, на ветвь <branch-name>, вы можете выполнить команду checkout из-под текущей ветви применимо к ветви <branch-name>, а затем произвести повторное слияние. Вы также можете пометить важные точки в вашей истории принятия изменений, используя теги.$git tag –a v1.0.$git fetch.$git pull.$git push.В этом разделе мы первый раз начнем работать с кодом. Ранее мы уже выбрали текстовый редактор для набора и редактирования кода. Вы можете использовать один из своих любимых текстовых редакторов. Как отмечалось в предыдущем разделе, мы будем использовать текстовый редактор Sublime для написания кода из этой книги.
Итак, сейчас, когда у нас есть готовый к работе редактор кода, давайте откроем файл settings.py в папке проекта и посмотрим, что он содержит:
# Django settings for django_mytweets project.
DEBUG = True
TEMPLATE_DEBUG = DEBUG
ADMINS = ( # ('Your Name', 'your_email@domain.com'), )
MANAGERS = ADMINS
DATABASE_ENGINE = ''#'postgresql_jpsycopg2','postgresql',# 'mysql', 'sqlite3' or 'ado_mssql'.
# DATABASE_NAME = '' #Or path to database file# if using sqlite3.
DATABASE_USER = ''#Not used with sqlite3.
DATABASE_PASSWORD = ' #Notused with sqlite3.
DATABASE_HOST =''#Set to empty string for localhost.# Not used with sqlite3.
DATABASE_PORT = 11 # Set to empty string for default.
# Not used with sqlite3.
Файл settings.py содержит много строк, но мы обрезали его оставшееся содержимое.
Как вы могли уже отметить, файл содержит некоторое число переменных, контролирующих некоторые аспекты приложения. Вставить новое значение так же просто, как сделать присвоение состояние в Python. В довершение ко всему, файл богато комментирован, детально поясняя, что каждая переменная контролирует.
Но сейчас нас интересует настройка базы данных. Как отмечалось выше, Django поддерживает несколько систем баз данных, поэтому необходимо определиться, какую систему базы данных мы будем использовать. Это контролируется переменной DATABASE_ENGINE. Если вы установили SQLite, установите значение переменной в ‘sqlite3’. В противном случае выберите значение переменной исходя из выбранной вами базы данных.
Следующий шаг – указание имени базы данных. Мы выберем говорящее имя для нашей базы данных; отредактируйте значение поля DATABASE_NAME и установите его значением django_mytweetsdb. С другой стороны, если у вас есть сервер базы данных, вам нужно сделать следующее:
После этого несложного редактирования, раздел отвечающий за настройки базы данных в файле settings.py будет выглядеть примерно так:
DATABASE_ENGINE = 'sqlite3' DATABASE_NAME = 'django_mytweetsdb' DATABASE_USER = '' DATABASE_PASSWORD = '' DATABASE_HOST = '' DATABASE_PORT = ''
Наконец, мы должны популярно рассказать Django о настроенной базе данных с таблицами. Хотя мы еще не создавали таблиц для наших данных (по крайней мере, до следующей главы), Django требуются некоторые таблицы в базе данных для обеспечения нормальной функциональности. Легко создать эти таблицы, используя следующую команду:
$python manage.py syncdb
Если все верно, то на экране появятся статусные сообщения, показывающие, что таблицы созданы. Когда будет запрошен аккаунт суперпользователя, введите предпочитаемый логин, адрес электронной почты и пароль. Если же напротив, база данных сконфигурирована ошибочно, будет выведено сообщение об ошибке, которое поможет вам устранить источник проблемы. Если же все в порядке, мы готовы запускать приложение.
Как обсуждалось ранее, Django поставляется вместе с легковесным веб-сервером для разработки и тестирования приложений. Этот сервер предварительно настроен на работу с Django, он перезапускается каждый раз, когда изменяется код.
Для запуска сервера введите следующую команду:
python manage.py runserver
Далее, откройте ваш браузер и перейдите по этому адресу: http://localhost:8000/.
Вы должны увидеть сообщение-приглашение, как показано на следующем скриншоте:
Поздравляем! Вы создали и настроили ваш первый проект Django. Это проект будет фундаментом, на основании которого мы будем строить наше приложение для веб-закладок. В следующей главе мы начнем разработку нашего приложения, и страницу, отображаемую веб-сервером, заменим на то, что мы напишем сами!
Как вы могли заметить, веб-сервер по умолчанию работает на порту 8000. Если вы захотите изменить порт, вам нужно определить его с помощью следующей команды:
$ python manage.py runserver <port numbers>
Также, по умолчанию сервер разработки запускается на локальной машине. Если вы хотите, чтобы сервер разработки был доступен в вашей сети, используйте следующие аргументы командной строки:
$ python manage.py runserver 0.0.0.0:<port numbers>
Когда начинается веб-разработка, то есть одна вещь, которая главным образом способствует успеху веб-проекта – пользовательский интерфейс и пользовательский опыт. Хотя Django держит при себе всю бизнес-логику, несомненно нужен не только классный фронтэнд-фреймворк для дизайна, который облегчит жизнь программиста, пока он разрабатывает код, но так-же улучшит пользовательский опыт всего веб-проекта. Поэтому мы объясним здесь наш выбор Twitter Bootstrap.
Bootstrap – это законченный фронтэнд-фреймворк и в этой книге мы познакомимся с каждой его стороной. Вас должно удивить, почему мы взялись обсуждать Bootstrap в книге о Django. Мы должны вам рассказать об этом фронтэнд-фреймворке. Главная идея этого в том, чтобы помочь вам построить веб-приложение, которое сразу же можно использовать в производстве и которое вы можете развернуть в облаках, таких как AWS и Heroku. Нужно, чтобы к завершению этого курса ваш проект был на стадии производства. Поэтому, храня верность Bootstrap так просто, как это возможно, вы сможете сделать веб-приложение Django, которое будет прилично смотреться.
Есть много способов расположить ваши веб страницы, основанных на перестановках и комбинировании. Чтобы помочь вам это понять, приведем несколько примеров.
Каркас – первый шаг на пути веб-разработки, который подразумевает работу по размещению содержимого на странице. Если вы уже знаете принципы веб-дизайна, то эта часть будет особенно полезна для вас. А если же вы ничего о них не знаете, прочтите об основной идее веб-программирования. Посмотрите на разницу между div и span и вам на многое откроется новый взгляд. Вы можете узнать больше здесь: https://developer.mozilla.org/en-US/Learn/HTML. Каркас базовой страницы Bootstrap состоит из строк и столбцов; каждый столбец сам делится на 12 секций. С помощью этих подсекций вы можете, используя перестановки содержимого, добиться нужного вам дизайна страницы.
Когда мы смотрим на веб-сайт с точки зрения разработчика, первое, что мы замечаем,это каркас. Например, посетив сайт www.facebook.com, вы увидите, что в центре страницы располагаются новости, на которые вы подписаны, а другие ссылки (такие как ссылки на сообщения, страницы друзей и новости) располагаются в левой части страницы. В правой части страницы вы увидите ваших друзей, с которыми доступен чат.
Такое расположение представляется в Bootstrap как 2-8-2. Столбец боковых ссылок слева будет шириной в два столбца, подписка на новости будет шириной в 8 столбцов, а раздел чата будет шириной в два столбца. Это основной каркас.
Но не только Bootstrap делает веб-страницу отзывчивей – есть много другие компонентов, чтобы сделать веб-страницу яснее и лучше.
Для использования Bootstrap с Django есть два способа:
Если вы хотите установить Bootstrap через команду, то вам нужно присоединить значение bootstrap3 к переменной INSTALL_APPS.
Вот примерный шаблон Django для использования этого метода в простой HTML-форме:
{% load bootstrap3 %}
{%# simple HTML form #%}
<form action="action_url">
{% csrf_token %}
{% bootstrap_form sample_form %}
{% buttons %}
<button type="submit" class="btn btn-primary">
{% bootstrap_icon "heart" %} SUBMIT </button>
{% endbuttons %}
</form>
Для того, чтобы узнать и исследовать больше, пройдите по ссылке: http://django-bootstrap3.readthedocs.org/
Этот способ рекомендуется для начинающих, но, если у вас соблюдается конфиденциальность, то вы можете сделать ярлыки на команды метода.
Здесь мы изучим основное включение в файлы проекта, а оставшуюся часть разберем в других главах. Когда вы скачали Bootstrap с онлайн-источника (http://getbootstrap.com), распакованная структура папок будет выглядеть примерно так:
I -- css
| |-- bootstrap.css
| |-- bootstrap.css.map
| |-- bootstrap.min.css
| |-- bootstrap-theme.css
| |-- bootstrap-theme.css.map
| `-- bootstrap-theme.min.css
|---fonts
| |-- glyphicons-halflings-regular.eot
| | -- glyphicons-halflings-regular.svg
|-- glyphicons-halflings-regular.ttf `
`-- glyphicons-halflings-regular.woff
`--js
|- - bootstrap.js '
`-- bootstrap.min. js
Есть два типа локальных файлов. Согласованных на работу с Django: "Статичный" и "медиа". Статические файлы относятся к активным частям вашего проекта, таким как CSS, JavaScript и т.д. Медиа файлы представлены загруженными файлами проекта, в основном состоящими из изображе-ний, видео для воспроизведения или скачивания и т.д.
Добавление статичных файлов может быть осуществлено добавлением следующих строк в файл settings.py:
STATICFILES_DIRS = ( # put absolute path here as string not relative path. # forward slash to be used even in windows. os.path.join(? os.path.dirname( file ), 'static1, ) , )
Итак, сейчас у вас есть все необходимое, чтобы создать каталог внутри вашего каталога проекта и копировать все ресурсы Bootstrap.
Контрольные вопросы
Упражнения.
Упражнение 1.
Создав новый проект, выводящий надпись "HELLO WORLD!" на главной странице, проверьте правильность кода, не запуская сервер разработки
Упражнение 2.
Создайте ветвь вашего приложения, созданного в упражнении 1, и загрузите ее на ваш аккаунт Git.
Упражнение 3.
Скачайте и установите любую другую систему контроля версий и настройте ее для вашего проекта
Упражнение 4.
Загрузите какой либо репозиторий с проектом Django через систему контроля версий Git и запустите сервер разработки с данным проектом
Список тем, эссе
Краткие итоги
Цель лекции: Рассмотреть стиль кодирования на платформе Django; изучить стандартную структуру проекта Django; ознакомиться с системой контроля версий Git и изучить ее основные команды; установка Twitter Bootstrap для быстрой разработки стилей проекта.
Ключевые термины: Django, Python, sublime, сервер, разра-ботка, проект, база, приложение, bootstrap, файл, git, версия
Многие из практических техник Django основываются на Python. Хотя и остаётся шанс, что вы ими владеете, мы все же прервемся и опишем все задокументированные техники, потому что вы должны знать эти концепции перед началом работы. Конечно же, вы можете вернуться к этой главе, и бросить на нее свежий взгляд, когда вы начнете создавать свои проекты.
Для учета стандартных техник, были созданы улучшенные предложения Python, и одной из таких широко распространенных техник для разработки, принятой в сообществе, является PEP8, гид по стилю кода Python – лучший путь стилизовать код Python авторизованный Гидо ван Россумом.
Как сказано в документации, "PEP8 работает согласно семантике и соглашениям, принятым в строках документации Python". Для дальнейшего ознакомления, пожалуйста, посетите http: //legacy.python.org/dev/peps/pep-0008/.
Когда вы пишете код на Python, отступ играет важную роль. Оно выступает в качестве блока в других языках, например, как в C или Perl. Среди программистов всегда идут споры о том, использовать ли где-то табуляцию или пробелы, а если использовать пробелы, то сколько: два, четыре или восемь. Использование 4 пробелов для отступа лучше, чем восемь, а если при этом есть некоторое количество связанных блоков, то восемь пробелов могут помочь разместить на каждой строке больше кода. Но опять же, это выбор программиста.
Следующий фрагмент показывает, к чему ведет неверное использование отступа:
<<< def a(): ... print "foo" ... print "bar" IndentationError: unexpected indent
И что же мы должны использовать? Табуляцию или пробелы?
Выберите что-то одно, но никогда не смешивайте табуляцию и пробелы в одном проекте, иначе это превратится в кошмар для поддержки. Более популярно в Python делать отступы пробелами; табуляция используется в последнюю очередь. Если какой-либо встретившийся вам код использует смесь из табуляции и пробелов, то его следует привести к варианту с пробелами.
Создать правильный отступ – достаточно ли четырех пробелов на уровень отступа?
Много насчет этого существует путаницы, но синтаксис языка Python целиком завязан на отступах. Будем честны: в большинстве случаев, это так. Строго рекомендуется использовать 4 пробела на уровень отступа, а если вы пользуетесь двумя пробелами, то прекратите это делать.
Ничего страшного, конечно же в этом нет, но когда вы будете взаимодействовать со сторонними библиотеками, то на выходе у вас получится сборная солянка из кода, который трудно будет отлаживать.
Теперь об отступах. Когда ваш код располагается в продолжение строки, вы должны растянуть его, выравнивая вертикально. Когда вы используете выступ, первая строка не должна содержать никаких аргументов и дальнейшие отступы должны использоваться для четкого выделения строки как продолжающейся линии.
Выступ (также известный как отрицательный отступ) – стиль отступа, при котором все строки отступают, кроме первой строки абзаца. Предыдущий абзац является примером использования выступа
Следующий фрагмент показывает, как должен правильно использовать метод отступа при написании кода.
bar = some functionname( varfirst, varsecond, varthird, varfourth) # Here indentation of arguments makes them grouped, and stand clear from others. def some function name( varfirst, varsecond, varthird, varfourth): print(varfirst) # This example shows the hanging intent.?
Нас не вдохновляет следующий фрагмент кода, да он и не работает в Python
# When vertical alignment is not used. Arguments on the first line are forbidden foo = somefunctionname(varfirst, varsecond, varthird, varfourth) # Further indentation is required as indentation is not distinguish-able between arguments and source code. def some_function_name( varfirst, varsecond, varthird, varfourth): print(varfirst)
Хотя дополнительные отступы не требуются, но если вы хотите их использовать, чтобы убедиться, что код работает, вы можете использовать следующий стиль кода:
# Extra indentation is not necessary, if (this and that): dosomething()
Важность двух пустых строк и одной пустой строки заключается в следующем:
Импорт пакета является прямым приложением повторного использования кода. Поэтому, всегда строки импорта помещаются в верхней части файла с исходным кодом, сразу же после любого комментария в модуле и строки документа, и перед объявлением глобальных переменных и переменных-констант. Каждая отдельная строка содержит команду для импорта одного модуля.
Лучше всего производить импорт, как показано ниже:
import os import sys
Не рекомендуется вызывать для импорта в одной строке более одного модуля, например:
import sys, os
Вы можете импортировать модули, придерживаясь следующего примера, хотя это на выбор:
from django.http import Http404, HttpResponse
Если ваш импорт получается дольше, то следующий метод поможет объявить их:
from django.http import ( Http404, HttpResponse, HttpResponsePermanentRedirect )
Импортированный пакет может быть сгруппирован следующими способами:
import re import simplejson
from decimal import *
from models import ModelFoo from models import ModelBar
В любом языке программирования и фреймворке есть свое соглашение об именах. В Python/Django оно более или менее схоже, но лучше осветить его здесь. Вам необходимо следовать ему, когда вы присваиваете имена переменным, или даете имена глобальным переменным, называете класс, модуль, и т.д.
Вот так в общих чертах выглядит соглашение об именах, которого мы должны придерживаться:
На рынке много вариантов, если речь идет о редакторах исходного кода. Одни предпочитают полновесные IDE, других устраивают простые текстовые редакторы. Выбор за вами: возьмите то, что вам удобней. Если вы уже используете какую-то программу для работы с исходными файлами Python, то мы полагаем, что вы привыкли к ней и она будет хорошо работать и с Django. С другой стороны, я могу порекомендовать вам такие программы, как:
Настройка вашего проекта с использованием текстового редактора Sublime.
Многие из примеров, написанных для этого курса, написаны с помощью текстового редактора Sublime. В этом разделе мы покажем, как установить и настроить проект Django.
По завершении установки, вы увидите что-то похожее на это:
Гораздо важнее всего Package Control, который является менеджером установки других плагинов прямо изнутри Sublime. Это позволит вам производить ручную установку пакета. Не беспокойтесь о дальнейшей установке пакета.
SublimeCodeIntel: Создана разработчиком SublimeLint. SublimeCodeIntel обладает расширенную функциональность, такую как, определение на ходу, умное дополнение кода и импорт предложений.
Вы можете найти и другие плагины для Sublime для увеличения вашей производительности.
Вы можете использовать одну из ваших любимых IDE для разработки проектов на Django. В этой книге мы используем pycharm. Эта IDE рекомендуется, так как она поможет вам с отладкой, используя точки останова, которые сэкономят вам кучу времени, если что-то пойдет не так.
Вот так можно установить и настроить IDE pycharm для Django:
Структура проекта Django изменилась начиная с вышедшей версии 1.6. Django (Django-admin.py) так же имеет команду startapp для создания приложение. Сейчас самое время объяснить разницу между приложением и проектом Django.
Проект – законченный веб-сайт или приложение, где приложение — это автономное Django-приложение. Приложение основано на принципе, что это должна быть единая вещь и она должна работать.
Дабы облегчить боль разработки проекта на Django с нуля, Django предоставляет возможность автогенерации файлов базовой структуры проекта из какого-либо еще проекта для того, чтобы продвинуть вперед разработку и добавление возможностей.
Таким образом, мы можем сказать, что проект – это собрание приложений, а приложение может быть написано, как отдельная сущность и может быть легко импортирована в проект.
Для создания вашего первого проекта Django, откройте терминал (или командная строка у Windows пользователей; для запуска выполните: Пуск| Выполнить| cmd ) и наберите следующую команду. Затем, нажмите Enter.
$ django-admin.py startproject django_mytweets
Эта команда создает папку с именем django_mytweets в текущем каталоге и создает начальную структуру внутри нее. Посмотрим, что за файлы создались.
Новая структура выглядит следующим образом:
django_mytweets// /django_mytweets/ manage.py
Это содержимое папки django_mytweets/:
django_mytweets/ init .py settings.py urls.py wsgi.py
Вот краткое объяснение, что это за файлы:
Это также означает, что вы можете импортировать сторонние приложения на уровне Django проекта. Этот каталог содержит так же файл manage.py, который содержит так же все настройки проекта.
Дополнительные разъяснения о настройках будут даны, когда мы приступим к изменению настроек.
Давайте взглянем на содержимое файла manage.py:
#!/usr/bin/env python import os import sys
if _name_ == " _main_ ":
os.environ.setdefault("DJANGO_SETTINGS_MODULE",
"django_ mytweets.settings")
from django.core.management import execute
from_command_line execute_from_command_line(sys.argv)
Исходный код файла будет очевидно понятен после того, как вы прочитаете нижеследующее объяснение кода.
#!/usr/bin/env python
В первой строке дается объявление того, что это файл исходного кода на языке Python, далее располагается секция импорта модулей os и sys. Эти модули содержат в основном системные операции.
import os import sys
Следующая часть кода проверяет, является ли файл исполняемым из функции main, которая является первой исполняемой функцией, а затем загружает модуль настроек Django по текущему пути. Так как вы запустили виртуальное окружение, пути всех модулей установятся для данного виртуального окружения.
if name == " _main_" :
os.environ.setdefault("DJANGO_SETTINGS_MODULE",
"django_mytweets.settings")
django_mytweets/ ( Inner folder)
_ init_.py
По умолчанию, база данных настроена на использование базы данных SQLite, которая рекомендуется для тестовых целей. Здесь мы только увидим, как входить в нашу базу данных; также здесь содержатся основные настройки конфигурации, и немного изменив файл manage.py, его можно переместить в другую папку, такую как config или conf.
Чтобы сделать стороннее приложение частью проекта, нужно зарегистрировать его в файле settings.py. Все записи об установленном приложении содержатся в переменной INSTALLED_APPS. По мере разрастания приложения. Им становится трудно управлять; есть три раздела в переменной INSTALLED_APPS, а именно:
Когда мы начнем писать код для нашего приложения, мы создадим новые файлы внутри каталога проекта; потому каталог проекта служит так же и хранилищем для нашего кода.
Теперь, когда мы дали общее представление о структуре проекта Django, давайте настроим нашу систему базы данных.
Лучшая практика – использование контроля версий
Контроль версий – это система, которая запоминает все изменения, которые вы сделали в проектах, и вы сохраняете ваш прогресс. В любой момент вы можете увидеть изменения, сделанные в отдельном файле; за пределами временного периода вы можете обратить эти изменения или отредактировать файл.
Он вносит гораздо больше смысла в проект, у которого несколько участников, главным образом для тех, кто работает над одним и тем же файлом одновременно. Контроль версий – это спасатель жизни, так как он хранит записи о версиях файлов и предоставляет такие возможности, как сохранение с объединением или отменой изменений в любой копии.
Мы будем использовать распределенную систему контроля версий, так что каждый разработчик сможет иметь полную копию проекта (в отличие от подверсий, где репозитории расположены на системном сервере).
Git – это инструмент контроля версий, который мы будем использовать для наших проектов. Это лучший инструмент из доступных, и он тоже относится к разряду open source. Git хорошо работает с разными версиями файлов, такими как файлы исходных кодов, файлы изображений, pdf файлы и т.д. Вы можете скачать Git по следующей ссылке:
Большинство современных IDE имеют встроенную поддержку системы контроля версий; как и PyCharm, для Sublime есть плагин, который может интегрировать Git в рабочий каталог. Git можно запустить с терминала с помощью команды git, и вы можете проверить все существующие варианты ее применения использовав команду git –help.
У нас, разработчиков, есть локальная копия нашего проекта, синхронизируемая с удаленным сервером (часто называемым репозиторием), которая может отправляться на удаленный репозиторий. Когда другой разработчик хочет загрузить изменения на удаленный репозиторий, он сначала загружает изменения. Минимальны шансы на конфликт у центрального репозитория, с которым синхронизирован каждый разработчик. Вся эта работа показана в следующем разделе.
Любой проект может быть отправлен на Git для системы контроля версий и в репозитории Git создается каталог. Для этого, выполните следующие команды:
$git init: В случае, если вы хотите скопировать существующий репозиторий на Git, в случае, когда ваш друг уже хранит проект где-нибудь на GitHub или BitBucket, используйте следующую команду:
$git clone url: URL-адрес удаленного репозитория, например https://github.com/AlienCoders/web-development.git.
Промежуточная область: Промежуточной областью является то место, где все файлы в нее входящие должны быть перечислены перед отправкой. Если вкратце, то промежуточная область необходима как немедленный для исполнения шаг, а не публикация напрямую, потому что, если происходят конфликты, они помечаются в промежуточной области. Файлы могут быть приняты только после разрешения конфликтов.
Давайте взглянем на следующие команды и их использование:
$git add <file-name> или $git add: Добавляет все файлы в промежуточную область.$git status: Используется для того, чтобы узнать статус рабочего каталога, какие были добавлены файлы в него, а какие нет.$git status: Получить статус, что что-то изменилось и отправлено в промежуточную область, или же изменилось и не отправлено туда.$git commit –m: Для применения сделанных изменений, сначала вы должны их добавить в промежуточную область. Затем вы их принимаете с помощью этой команды.$git rm <file-name>: Если вы ошибочно добавили файл в промежуточную область, то с помощью этой команды можете его удалить из нее.$git stash: Git не отслеживает переименование файлов. Другими словами, если вы переименовали файл, помещенный в промежуточную область, то вы должны его снова добавить в промежуточную область, а затем принять. Вы можете сохранить изменения, но в действительности не принимать в репозиторий с помощью этой команды.$git stash apply: Берет все текущие изменения и помещает их в стек. Затем вы можете продолжать работу с учетом ваших изменений. Однажды, когда вы захотите получить сохраненные изменения, воспользуйтесь этой командой.Другая концепция системы контроля версий – это ветви(Git). Ветвь — это как бы путь для сохранения ваших принятых изменений, и по умолчанию, сохранение происходит в главной ветви. Ветвь используется для отслеживания особенностей проекта. Каждая особенность может быть представлена в одной рабочей ветке. Когда особенность полностью готова, ее можно объединить с главной веткой.
Основная работа, которая протекает с ветвями, выглядит следующим образом: вначале вы задаете главную ветвь, и для каждой новой возможности создаете новую ветку. Изменения принимаются в новую ветку, и когда все будет готово с данной возможностью, можно объединить эту ветвь с главной. Это можно представить визуально, как описано далее:
$git branch: Чтобы представить список существующих ветвей через Git, используем данную команду.
$git checkout –b <new-branch-name>: С помощью этой команды может быть создана новая ветвь в существующем репозитории. Мы можем представить, как это будет выглядеть логически с помощью этой блок-схемы:
Вы получите сообщение, уведомляющее вас о том, что вы переключились на новую ветку. Если вы хотите переключиться обратно на старую ветвь, то используйте следующие команды:
$git checkout <old-branch-name>. Вы получите сообщение: Switched to branch <old-branch-name>.$git merge <branch-name>: используя эту команду, вы можете произвести слияние с указанной ветвью. Ваша текущая ветвь объединяется с ветвью <branch-name>. Для синхронизации с откатом изменений назад, на ветвь <branch-name>, вы можете выполнить команду checkout из-под текущей ветви применимо к ветви <branch-name>, а затем произвести повторное слияние. Вы также можете пометить важные точки в вашей истории принятия изменений, используя теги.$git tag –a v1.0.$git fetch.$git pull.$git push.В этом разделе мы первый раз начнем работать с кодом. Ранее мы уже выбрали текстовый редактор для набора и редактирования кода. Вы можете использовать один из своих любимых текстовых редакторов. Как отмечалось в предыдущем разделе, мы будем использовать текстовый редактор Sublime для написания кода из этой книги.
Итак, сейчас, когда у нас есть готовый к работе редактор кода, давайте откроем файл settings.py в папке проекта и посмотрим, что он содержит:
# Django settings for django_mytweets project.
DEBUG = True
TEMPLATE_DEBUG = DEBUG
ADMINS = ( # ('Your Name', 'your_email@domain.com'), )
MANAGERS = ADMINS
DATABASE_ENGINE = ''#'postgresql_jpsycopg2','postgresql',# 'mysql', 'sqlite3' or 'ado_mssql'.
# DATABASE_NAME = '' #Or path to database file# if using sqlite3.
DATABASE_USER = ''#Not used with sqlite3.
DATABASE_PASSWORD = ' #Notused with sqlite3.
DATABASE_HOST =''#Set to empty string for localhost.# Not used with sqlite3.
DATABASE_PORT = 11 # Set to empty string for default.
# Not used with sqlite3.
Файл settings.py содержит много строк, но мы обрезали его оставшееся содержимое.
Как вы могли уже отметить, файл содержит некоторое число переменных, контролирующих некоторые аспекты приложения. Вставить новое значение так же просто, как сделать присвоение состояние в Python. В довершение ко всему, файл богато комментирован, детально поясняя, что каждая переменная контролирует.
Но сейчас нас интересует настройка базы данных. Как отмечалось выше, Django поддерживает несколько систем баз данных, поэтому необходимо определиться, какую систему базы данных мы будем использовать. Это контролируется переменной DATABASE_ENGINE. Если вы установили SQLite, установите значение переменной в ‘sqlite3’. В противном случае выберите значение переменной исходя из выбранной вами базы данных.
Следующий шаг – указание имени базы данных. Мы выберем говорящее имя для нашей базы данных; отредактируйте значение поля DATABASE_NAME и установите его значением django_mytweetsdb. С другой стороны, если у вас есть сервер базы данных, вам нужно сделать следующее:
После этого несложного редактирования, раздел отвечающий за настройки базы данных в файле settings.py будет выглядеть примерно так:
DATABASE_ENGINE = 'sqlite3' DATABASE_NAME = 'django_mytweetsdb' DATABASE_USER = '' DATABASE_PASSWORD = '' DATABASE_HOST = '' DATABASE_PORT = ''
Наконец, мы должны популярно рассказать Django о настроенной базе данных с таблицами. Хотя мы еще не создавали таблиц для наших данных (по крайней мере, до следующей главы), Django требуются некоторые таблицы в базе данных для обеспечения нормальной функциональности. Легко создать эти таблицы, используя следующую команду:
$python manage.py syncdb
Если все верно, то на экране появятся статусные сообщения, показывающие, что таблицы созданы. Когда будет запрошен аккаунт суперпользователя, введите предпочитаемый логин, адрес электронной почты и пароль. Если же напротив, база данных сконфигурирована ошибочно, будет выведено сообщение об ошибке, которое поможет вам устранить источник проблемы. Если же все в порядке, мы готовы запускать приложение.
Как обсуждалось ранее, Django поставляется вместе с легковесным веб-сервером для разработки и тестирования приложений. Этот сервер предварительно настроен на работу с Django, он перезапускается каждый раз, когда изменяется код.
Для запуска сервера введите следующую команду:
python manage.py runserver
Далее, откройте ваш браузер и перейдите по этому адресу: http://localhost:8000/.
Вы должны увидеть сообщение-приглашение, как показано на следующем скриншоте:
Поздравляем! Вы создали и настроили ваш первый проект Django. Это проект будет фундаментом, на основании которого мы будем строить наше приложение для веб-закладок. В следующей главе мы начнем разработку нашего приложения, и страницу, отображаемую веб-сервером, заменим на то, что мы напишем сами!
Как вы могли заметить, веб-сервер по умолчанию работает на порту 8000. Если вы захотите изменить порт, вам нужно определить его с помощью следующей команды:
$ python manage.py runserver <port numbers>
Также, по умолчанию сервер разработки запускается на локальной машине. Если вы хотите, чтобы сервер разработки был доступен в вашей сети, используйте следующие аргументы командной строки:
$ python manage.py runserver 0.0.0.0:<port numbers>
Когда начинается веб-разработка, то есть одна вещь, которая главным образом способствует успеху веб-проекта – пользовательский интерфейс и пользовательский опыт. Хотя Django держит при себе всю бизнес-логику, несомненно нужен не только классный фронтэнд-фреймворк для дизайна, который облегчит жизнь программиста, пока он разрабатывает код, но так-же улучшит пользовательский опыт всего веб-проекта. Поэтому мы объясним здесь наш выбор Twitter Bootstrap.
Bootstrap – это законченный фронтэнд-фреймворк и в этой книге мы познакомимся с каждой его стороной. Вас должно удивить, почему мы взялись обсуждать Bootstrap в книге о Django. Мы должны вам рассказать об этом фронтэнд-фреймворке. Главная идея этого в том, чтобы помочь вам построить веб-приложение, которое сразу же можно использовать в производстве и которое вы можете развернуть в облаках, таких как AWS и Heroku. Нужно, чтобы к завершению этого курса ваш проект был на стадии производства. Поэтому, храня верность Bootstrap так просто, как это возможно, вы сможете сделать веб-приложение Django, которое будет прилично смотреться.
Есть много способов расположить ваши веб страницы, основанных на перестановках и комбинировании. Чтобы помочь вам это понять, приведем несколько примеров.
Каркас – первый шаг на пути веб-разработки, который подразумевает работу по размещению содержимого на странице. Если вы уже знаете принципы веб-дизайна, то эта часть будет особенно полезна для вас. А если же вы ничего о них не знаете, прочтите об основной идее веб-программирования. Посмотрите на разницу между div и span и вам на многое откроется новый взгляд. Вы можете узнать больше здесь: https://developer.mozilla.org/en-US/Learn/HTML. Каркас базовой страницы Bootstrap состоит из строк и столбцов; каждый столбец сам делится на 12 секций. С помощью этих подсекций вы можете, используя перестановки содержимого, добиться нужного вам дизайна страницы.
Когда мы смотрим на веб-сайт с точки зрения разработчика, первое, что мы замечаем,это каркас. Например, посетив сайт www.facebook.com, вы увидите, что в центре страницы располагаются новости, на которые вы подписаны, а другие ссылки (такие как ссылки на сообщения, страницы друзей и новости) располагаются в левой части страницы. В правой части страницы вы увидите ваших друзей, с которыми доступен чат.
Такое расположение представляется в Bootstrap как 2-8-2. Столбец боковых ссылок слева будет шириной в два столбца, подписка на новости будет шириной в 8 столбцов, а раздел чата будет шириной в два столбца. Это основной каркас.
Но не только Bootstrap делает веб-страницу отзывчивей – есть много другие компонентов, чтобы сделать веб-страницу яснее и лучше.
Для использования Bootstrap с Django есть два способа:
Если вы хотите установить Bootstrap через команду, то вам нужно присоединить значение bootstrap3 к переменной INSTALL_APPS.
Вот примерный шаблон Django для использования этого метода в простой HTML-форме:
{% load bootstrap3 %}
{%# simple HTML form #%}
<form action="action_url">
{% csrf_token %}
{% bootstrap_form sample_form %}
{% buttons %}
<button type="submit" class="btn btn-primary">
{% bootstrap_icon "heart" %} SUBMIT </button>
{% endbuttons %}
</form>
Для того, чтобы узнать и исследовать больше, пройдите по ссылке: http://django-bootstrap3.readthedocs.org/
Этот способ рекомендуется для начинающих, но, если у вас соблюдается конфиденциальность, то вы можете сделать ярлыки на команды метода.
Здесь мы изучим основное включение в файлы проекта, а оставшуюся часть разберем в других главах. Когда вы скачали Bootstrap с онлайн-источника (http://getbootstrap.com), распакованная структура папок будет выглядеть примерно так:
I -- css
| |-- bootstrap.css
| |-- bootstrap.css.map
| |-- bootstrap.min.css
| |-- bootstrap-theme.css
| |-- bootstrap-theme.css.map
| `-- bootstrap-theme.min.css
|---fonts
| |-- glyphicons-halflings-regular.eot
| | -- glyphicons-halflings-regular.svg
|-- glyphicons-halflings-regular.ttf `
`-- glyphicons-halflings-regular.woff
`--js
|- - bootstrap.js '
`-- bootstrap.min. js
Есть два типа локальных файлов. Согласованных на работу с Django: "Статичный" и "медиа". Статические файлы относятся к активным частям вашего проекта, таким как CSS, JavaScript и т.д. Медиа файлы представлены загруженными файлами проекта, в основном состоящими из изображе-ний, видео для воспроизведения или скачивания и т.д.
Добавление статичных файлов может быть осуществлено добавлением следующих строк в файл settings.py:
STATICFILES_DIRS = ( # put absolute path here as string not relative path. # forward slash to be used even in windows. os.path.join(? os.path.dirname( file ), 'static1, ) , )
Итак, сейчас у вас есть все необходимое, чтобы создать каталог внутри вашего каталога проекта и копировать все ресурсы Bootstrap.
Контрольные вопросы
Упражнения.
Упражнение 1.
Создав новый проект, выводящий надпись "HELLO WORLD!" на главной странице, проверьте правильность кода, не запуская сервер разработки
Упражнение 2.
Создайте ветвь вашего приложения, созданного в упражнении 1, и загрузите ее на ваш аккаунт Git.
Упражнение 3.
Скачайте и установите любую другую систему контроля версий и настройте ее для вашего проекта
Упражнение 4.
Загрузите какой либо репозиторий с проектом Django через систему контроля версий Git и запустите сервер разработки с данным проектом
Список тем, эссе
Краткие итоги
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.