svfat
7 мин
161K
Django *
Туториал
Данная статья предназначена для новичков в web-программировании и освещает вопросы разработки блога на Django с использованием Twitter Bootstrap и его развертывания на бесплатном хостинге PythonAnywhere. Я старался написать как можно более проще и понятнее. Более опытным пользователям данное чтиво не расскажет ничего нового, да и некоторые приемы возможно покажутся неэффективными.
Предполагаю, что читатель уже ознакомлен с синтаксисом Python, имеет минимальное представление о Django (для начала неплохо пройти обучение на http://codeacademy.com по соответствующей теме и прочитать туториал по Django), а также владеет приемами работы в командной строке.
Итак, начинаем с организации рабочего окружения на локальном компьютере. В принципе, для наших запросов подойдет любая операционная система в которой вы чувствуете себя уверенно, здесь я описываю процесс для GNU/Linux, а для других систем шаги могут незначительно отличаться. В системе должна быть установлена virtualenv — утилита для создания изолированного рабочего окружения (чтобы библиотеки, которые мы используем не мешались другим программам и проектам).
Cоздаем и активируем окружение:
mkdir ~/projectscd ~/projectsvirtualenv envsource env/bin/activate
В ОС Windows последняя команда должна быть такой:
env\Scripts\activate
Устанавливаем Django с помощью pip — менеджера пакетов Python.
pip install django
Создаем новый проект. Назовем его как-нибудь оригинально — например mysite.
django-admin.py startproject mysite && cd mysite
Скрипт отработает и создаст каталог mysite с еще одним каталогом mysite и несколькими *.py файлами внутри.
Используем скрипт manage.py для создания приложения django с именем blog.
python manage.py startapp blog
Отредактируем настройки в файле mysite/settings.py (обратите внимание: я имею ввиду ~/projects/mysite/mysite/settings.py) добавив туда следующее:
# coding: utf-8import osBASE_DIR = os.path.dirname(os.path.dirname(__file__))
В первой строке укажем кодировку в которой работаем, во избежание путаницы и глюков предлагаю указывать ее во всех изменяемых файлах *.py, перекодируя их соответственно в UTF-8.
В BASE_DIR будет храниться полный путь к нашему проекту, что бы использовать относительные пути при дальнейшем конфигурировании
Настроим базу данных, в нашем проекте вполне можно использовать SQLite
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), }}
Настроим часовой пояс и язык:
TIME_ZONE = 'Europe/Moscow'LANGUAGE_CODE = 'ru-ru'
Для того что бы Django узнало о созданном приложении, добавим 'blog' в кортеж INSTALLED_APPS, а также раскомментируем строку 'django.contrib.admin' для включения встроенной админки:
INSTALLED_APPS = ( 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', 'django.contrib.messages', 'django.contrib.staticfiles', 'django.contrib.admin', 'blog',)
Чтобы админка заработала, редактируем mysite/urls.py
from django.conf.urls import patterns, include, urlfrom django.contrib import adminadmin.autodiscover() #функция автоматического обнаружения файлов admin.py в наших приложенияхurlpatterns = patterns('', url(r'^admin/', include(admin.site.urls)), #URL админки http://имя_сайта/admin/)
Cоздаем модель в blog/models.py
from django.db import modelsclass Post(models.Model): title = models.CharField(max_length=255) # заголовок поста datetime = models.DateTimeField(u'Дата публикации') # дата публикации content = models.TextField(max_length=10000) # текст поста def __unicode__(self): return self.title def get_absolute_url(self): return "/blog/%i/" % self.id
На основании этой модели Django автоматически создаст таблицы в базе данных.
Регистрируем ее в админке blog/admin.py
from django.contrib import adminfrom blog.models import Post # наша модель из blog/models.pyadmin.site.register(Post)
Создадим таблицы командой:
python manage.py syncdb
При первом вызове этой команды Django предложит создать суперпользователя, воспользуемся данным предложением.
Запускаем отладочный сервер который предоставляет Django:
python manage.py runserver
Теперь вводим url в браузере
Если все прошло хорошо, мы должны видеть это:
Заходим с ранее созданным логином\паролем в админку — теперь мы имеем возможность добавлять и удалять посты (кнопки справа от Posts)
Создадим несколько постов для отладки.
Теперь займемся созданием фронтенда, нам требуется всего две шаблонных страницы — одна с перечислением всех постов, вторая — содержание поста.
Редактируем blog/views.py
from blog.models import Post from django.views.generic import ListView, DetailViewclass PostsListView(ListView): # представление в виде списка model = Post # модель для представления class PostDetailView(DetailView): # детализированное представление модели model = Post
Добавим в urlpatterns mysite/urls.py строку
url(r'^blog/', include('blog.urls')),
Для того что бы все URL-ы начинающиеся с /blog/ будут обрабатываться с помощью urls.py из модуля blog, и создаем сам файл urls.py в каталоге blog со следующим содержанием:
#coding: utf-8from django.conf.urls import patterns, urlfrom blog.views import PostsListView, PostDetailView urlpatterns = patterns('',url(r'^$', PostsListView.as_view(), name='list'), # то есть по URL http://имя_сайта/blog/ # будет выводиться список постовurl(r'^(?P<pk>\d+)/$', PostDetailView.as_view()), # а по URL http://имя_сайта/blog/число/ # будет выводиться пост с определенным номером)
Теперь нужно создать шаблоны страниц. По умолчанию для класса PostListView Django будет искать шаблон в blog/templates/blog/post_list.html (такой длинный и странный путь связан с логикой работы фреймворка, в силах разработчика поменять это поведение, но в данной статье я этого не касаюсь)
создадим этот файл:
{% block content %} {% for post in object_list %} <p>{{ post.datetime }}</p> <h2><a href="{{ post.get_absolute_url }}">{{ post.title }}</a></h2> <p>{{ post.content }}</p> {% empty %} <p>Нет постов</p> {% endfor %}{% endblock %}
Что же, давайте попробуем как все работает, зайдя по URL на http://localhost:8000/blog/. Если ошибок нет, то мы увидим список постов, где заголовок каждого поста является ссылкой.
Пока эти ссылки ведут в никуда, надо это исправить. По умолчанию для класса PostDetailView шаблон находится в blog\templates\blog\post_detail.html.
Создаем его:
{% block content %} <p>{{ post.datetime }}</p> <h2>{{ post.title }}</h2> <p>{{ post.content }}</p>{% endblock %}
И снова проверяем: http://localhost:8000/blog/1/
Добавим возможность комментирования наших записей, в этих целях мы воспользуемcя услугами DISQUS, который установим с помощью pip
pip install django-disqus
Этот модуль предоставляет функционал комментариев, с защитой от спама, аватарками и прочим, а также берет на себя заботу по их хранению:
Добавляем в post_detail.html перед {% endblock %}
<p> {% load disqus_tags %} {% disqus_dev %} {% disqus_show_comments %}</p>
В INSTALLED_APPS файла settings.py добавляем 'disqus'
INSTALLED_APPS = ( 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', 'django.contrib.messages', 'django.contrib.staticfiles', 'django.contrib.admin', 'blog', 'disqus',)
А также добавляем в settings.py
DISQUS_API_KEY = '***'DISQUS_WEBSITE_SHORTNAME = '***'
Два последних значения получаем, зарегистрировавшись на http://disqus.com.
Тестируем проект в браузере. Отлично, функционал нашего приложения внушает, но надо что-то делать с оформлением. Самый простой, и в тоже время современный вариант, использовать Twitter Bootstrap.
Качаем архив http://twitter.github.io/bootstrap/assets/bootstrap.zip и разархивируем его в каталог static нашего проекта (я имею в виду ~/projects/mysite/static — создаем его)
Редактируем settings.py, что бы Django знало где искать статические страницы.
STATICFILES_DIRS = ( os.path.join(BASE_DIR, 'static'),)
Создаем файл blog/templates/blog/base.html следующего содержания
<!DOCTYPE html><html lang="ru"> <head> <meta charset="utf-8" /> <title>MyBlog</title> <link href="{{STATIC_URL}}bootstrap/css/bootstrap.css" rel="stylesheet"> <style> body { padding-top: 60px; /* 60px to make the container go all the way to the bottom of the topbar */ } </style> <link href="{{STATIC_URL}}bootstrap/css/bootstrap-responsive.css" rel="stylesheet"> <!--[if lt IE 9]> <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> <![endif]--> <script src="{{STATIC_URL}}bootstrap/js/bootstrap.js" type="text/javascript"></script> {% block extrahead %} {% endblock %} <script type="text/javascript"> $(function(){ {% block jquery %} {% endblock %} }); </script> </head><body><div class="navbar navbar-inverse navbar-fixed-top"> <div class="navbar-inner"> <div class="container"> <div class="brand">My Blog</div> <ul class="nav"> <li><a href="{% url 'list' %}" class="">Список постов</a></li> </ul> </div> </div></div><div class="container"> {% block content %}Empty page{% endblock %}</div> <!-- container --></body></html>
Это основной шаблон для наших страниц, включаем его в post_list.html и post_detail.html дописав первой строкой в них
{% extends 'blog/base.html' %}
Проверяем работоспособность. Вот теперь красота наведена, можно приступить развертыванию приложения на бесплатном облачном хостинге.
Регистрируем бесплатный N00b аккаунт на PythonAnywhere. Мне понравился этот сервис легкостью в установке Django, все происходит практически так же как и на локальном компьютере.
Допустим мы создали пользователя на PythonAnywhere с именем djangotest, тогда наше приложение будет располагаться по адресу djangotest.pythonanywhere.com. Внимание: заменяйте далее по текстк 'djangotest' на свой логин в PythonAnywhere.
Меняем в settings.py
DEBUG = False
и дописываем
ALLOWED_HOSTS = ['djangotest.pythonanywhere.com']
Закачиваем файлы на хостинг любым из доступных способов.
На мой взгляд, для неискушенного пользователя, проще всего заархивировать папку проекта, залить архив на сервер (в разделе Files->Upload a file) и разархивировать его на сервере командой в bash — шелле (Раздел Consoles -> bash):
например если мы залили файл mysite.tar.gz то выполняем в консоли PythonAnywhere
tar -zxvf mysite.tar.gz
Теперь настраиваем рабочее окружение на сервере, вводим в консоли PythonAnywhere:
virtualenv envsource env/bin/activatepip install django django-disqus
Настраиваем статические страницы в разделе Web -> Static files:
В первой строке — место где лежит bootstrap, во второй статические файлы встроенной админки Django.
Настраиваем WSGI (Web -> It is configured via a WSGI file stored at: ...):
activate_this = '/home/djangotest/env/bin/activate_this.py'execfile(activate_this, dict(__file__=activate_this))import osimport syspath = '/home/djangotest/mysite'if path not in sys.path: sys.path.append(path)os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'import django.core.handlers.wsgiapplication = django.core.handlers.wsgi.WSGIHandler()
Нажимаем кнопку Web -> Reload djangotest.pythonanywhere.com
Заходим на djangotest.pythonanywere.com/blog/ — поздравляю, это было нелегко, но Вы справились. Теперь у Вас есть собственный уютненький блог, разработанный своими руками на самых современных веб-технологиях!
FAQs
Что можно написать на Django? ›
Django — это бесплатный веб-фреймворк, подходящий для разработки сложных сайтов и веб-приложений, написанный на языке программирования Python и следует архитектурному шаблону MVC-MVT. Платформа реализована по принципу DRY — don't repeat yourself.
Сколько стоит сделать сайт на Django? ›Cреднестатистическая стоимость создания корпоративного сайта на django CMS составляет 225 212 рублей, промо-сайта - 243 750 рублей, интернет-магазина - 195 714 рублей.
Что нужно знать чтобы начать изучать Django? ›Для начала работы с Django важно освоить базовый синтаксис Python, основные типы данных, циклы и функции. Также важно знать принципы объектно-ориентированного программирования и уметь применять их на практике. Этих знаний хватит, чтобы написать первые проекты на Django.
Как сделать комментарии на сайте Django? ›- from django. conf. ...
- from . import views.
- app_name = 'post'
- urlpatterns = [
- url(r'^(?P<article_id>[0-9]+)/$', views. EArticleView. ...
- url(r'^comment/(?P<article_id>[0-9]+)/$', views. ...
- ]
Срок обучения зависит от уровня подготовки – от 2 месяцев до полутора лет. Ознакомительный видеокурс в записи можно пройти за пару месяцев или быстрее – некоторые школы предоставляют доступ к новой лекции сразу после выполнения задания по предыдущей теме.
Сколько берут за один сайт? ›Цены начинаются от 70.000 рублей на шаблонный сайт и доходят до 560.000 рублей без текста на уникальный проект. Дополнительные расходы на домен и хостинг от 10.000 до 50.000 рублей.
Сколько стоит 1 сайт? ›10 000 - 20 000 рублей. За эту цену можно рассчитывать на шаблонные сайты, текст от заказчика (либо дополнительная плата копирайтеру). Но максимум, что может сделать копирайтер, это более-менее читабельный текст. Если стоит задача, чтобы сайт продавал, то текст должен писать именно маркетолог.
Что лучше учить Django или flask? ›Как веб-фреймворк полного цикла, Django больше подходит для разработки больших и сложных веб-приложений, а Flask – это простой и расширяемый фреймворк, который позволяет разрабатывать небольшие веб-приложения. В Django вам понравится его «укомплектованность» и доступ к большему количеству функциональных возможностей.
Сколько зарабатывает Django разработчик? ›Перечислим условия, которые влияют на заработок Django-разработчика: Квалификация и стаж – junior, middle, senior, team lead. Средний доход программиста с опытом 1-3 года – от 100 до 120 тысяч рублей, 3-6 лет – от 125 до 200 тыс.
Сколько зарабатывают Django? ›165957.0 руб. - средняя зарплата для 'Django программист' (Россия). Средняя зарплата для 'Django программист', рассчитанная на основе вакансий, показывает среднее арифметическое по зарплатам из найденных вакансий (количество таких вакансий для 'Django программист' равно 23). 151000.0 руб.
Что такое Django простыми словами? ›
Django — это высокоуровневый Python веб-фреймворк, который позволяет быстро создавать безопасные и поддерживаемые веб-сайты.
Что должен знать Django? ›Что должен уметь специалист
Имеет общие представления о фронтенде веб-страниц, HTML, CSS и Javascript. Знаком с языком запросов SQL и особенностями работы с базами данных. Может работать с API сторонних сервисов.
Среди наиболее популярных фреймворков — Django, Laravel, Ruby On Rails, Spring, Express, ASP.NET Core.
Какой самый лучший фреймворк? ›- Express. ...
- ASP.NET core для . ...
- Laravel для PHP-программистов ...
- Ruby on Rails для Ruby-программистов ...
- Fiber Framework для Golang-разработчиков ...
- CakePHP Framework для PHP-разработчиков ...
- Flask Framework для Python-разработчиков ...
- Play Framework для Scala-разработчиков
Чтобы быстро закомментировать или раскомментировать строку кода в HTML или CSS редакторе, можете использовать сочетание клавиш ctrl + / или cmd + / .
Как писать комментарии в коде Python? ›С помощью символа #
Для добавления многострочного комментария нужно начинать каждую строку с символа решетки и одного пробела. Такой комментарий можно разбить на абзацы. Для этого достаточно добавлять пустые строки с символом перед каждым из них.
- Английский язык. ...
- POSIX-операционная система. ...
- Python и его структуры данных. ...
- Библиотеки Python. ...
- Форматы данных XML, HTML, JSON. ...
- Протокол HTTP. ...
- Базы данных. ...
- (очень желательно) Javascript, jQuery и прочие AngularJS.
Если вы хотите стать Python-разработчиком, то готовьтесь уделять учебе от десяти часов в неделю. Занимаясь такое количество времени, вы сможете освоить Python на уровне джуна примерно в течение года. Основы языка можно выучить самостоятельно с помощью книг, видеолекций и онлайн-курсов.
Что нужно знать Python Django разработчику? ›Что должен знать Python-разработчик? В первую очередь Python-разработчику необходимо владеть синтаксисом языка, правилами и командами, также важно изучить хотя бы одну, а лучше несколько библиотек, использующихся в интересующей для разработчика сфере (например, Django для веб-разработки).
Сколько стоит сайт в Америке? ›Фактически, сайт для малого бизнеса в Америке может стоит менее 1000 долларов, так и более 10 000 долларов США. Итак, будем считать, что средняя стоимость создания сайта для малого бизнеса в США около 5 000 долларов США.
Сколько стоит сделать сайт в 2023 году? ›
Средняя стоимость создания веб-сайта может варьироваться от 100 до 10 000 долларов. Цена зависит от размера, формата сайта, а также дополнительных услуг (интеграций, дополнительных функций, типа хостинга).
Какие сайты чаще всего заказывают? ›- Wildberries.
- Ozon.
- AliExpress.com.
- Lamoda.
- Ситилинк
- Золотое яблоко
- DNS.
- Читай-город
В 2021 году за разработку простого проекта платят 5–10 тысяч рублей. Многостраничный сайт обходится заказчику в среднем в 30 тысяч рублей. Фрилансер с небольшим опытом и портфолио заработает не меньше 50 тысяч рублей за месяц, если сдаст четыре проекта средней сложности.
Можно ли самому создать сайт? ›Сайт можно написать вручную, например на HTML, создать с помощью конструктора или с помощью системы управления контентом — CMS. Самостоятельно написать сайт в HTML может быть сложно, потому что нужно знать язык. HTML — это язык гипертекстовой разметки. Его разработал и опубликовал в 1993 году Тим Бернерс-Ли.
Что проще Laravel или Django? ›Laravel очень гибкий в том плане, что под него есть много инструментов, заточенных под те или иные нужды, например, Telescope — помощник для отладки приложений, а также большое комьюнити. Django более монолитный, считается, что он не слишком подходит для небольших проектов.
Что легче Ruby или Python? ›Python привычнее и проще, но подход Ruby выглядит более элегантным и профессиональным.
Чем FastAPI лучше Django? ›FastAPI выдержала больше одновременных подключений, особенно, при работе с базой. При увеличении количества параллельных запросов FastAPI справлялся лучше, чем Django. Django при количестве параллельных запросов больше 150 уже захлебывался и отбивал ответы. В итоге FastAPI действительно работает заметно быстрее.
Сколько зарабатывает Junior Python? ›Python разработчик junior
30 000 – 60 000 руб.
Согласно рейтингу TIOBE, Python — востребованный язык программирования: в 2022 году он обогнал по популярности даже C. Ведущие мировые компании: Google, Dropbox, Netflix, Reddit, Amazon, Uber, NASA, Spotify — используют его для своих разработок.
Сколько зарабатывает программист Python в сша? ›Зависимость размера заработной платы программиста в США
Примерно 15 % зарабатывает в пределах 37–45 тысяч долларов США в год. Половина айтишников получает в пределах 45–71 тысячи долларов в год. Еще 15 % — в пределах 71–87 тысяч долларов в год. Остальные 20 % — свыше 87 тысяч долларов в год.
Какая зарплата у iOS разработчика? ›
Разработчик среднего уровня, с опытом работы от трёх лет, зарабатывает 150 000 ₽ и выше. А самые опытные iOS-разработчики могут рассчитывать на зарплату 200 000 ₽, 300 000 ₽, а иногда даже 450 000 ₽ в месяц.
Можно ли заработать на Python? ›Зависит от опыта. Так, средняя зарплата Python‑разработчика составляет 150 000 рублей. У новичков всё скромнее: джуниорам предлагают около 60 000 рублей в месяц. Опытным специалистам могут платить и 200, и 250 тысяч рублей — верхний предел зарплат теряется где‑то в облаках.
Какие задачи решает Django? ›- Написать API.
- Подключить сторонние сервисы
- Подключить базу данных
- Управлять миграциями
- Обеспечить безопасность данных
Django — это фреймворк для веб-разработки, написанный на Python в 2005 году. Он позволяет создавать сайты и веб-приложения разной сложности — от личного блога до аудиоплатформы (на нём собран Spotify). От других фреймворков Django отличается модульностью и простотой освоения.
На каком языке пишутся шаблоны в Django? ›Django (Джанго, ['dʒæŋɡoʊ]) — свободный фреймворк для веб-приложений на языке Python, использующий шаблон проектирования MVC.
Какие сайты пишут на питоне? ›- Instagram. Instagram — это крупнейшее в мире приложение для обмена фотографиями. ...
- Google. Google это самый широко используемый поисковик в мире. ...
- Spotify. ...
- Netflix. ...
- Uber. ...
- Dropbox. ...
- Pinterest. ...
- Instacart.
Как создать сайт на Python легко и быстро
Один из популярных фреймворков, позволяющий создать веб сайт на Python, носит название Django.
Для Django это обычно сервер веб-приложений Gunicorn (скрипт . wsgi ).
Где удобнее писать Python? ›В IDE, комфортной для кодирования на Python, есть: Редактор кода со всеми его возможностями. Особое значение в IDE для Python имеет компактное, но функциональное окно для редактирования теста, а также подсветка элементов синтаксиса. Это позволяет лучше ориентироваться в тексте и писать строчки кода быстрее.
На каком языке написан Django? ›Django является чрезвычайно популярным и полнофункциональным серверным веб-фреймворком, написанным на Python.
Где лучше всего писать на Python? ›
PyCharm. Отличный вариант как для начинающих, так и для продвинутых программистов. У PyCharm понятный интерфейс, она изначально адаптирована под Python.
Что можно сделать на Python новичку? ›- Генератор случайных чисел
- Отгадай число
- Генератор текстов
- Текстовый квест
- «Угадай слово» («Виселица»)
Чаще всего для бэкенда новички изучают следующие языки программирования: Java Script, Python, Java, Go. Дополнительно нужно уметь взаимодействовать с базой данных и языком запросов SQL.
Что чаще всего пишут на питоне? ›Python — это высокоуровневый язык программирования, отличающийся эффективностью, простотой и универсальностью использования. Он широко применяется в разработке веб-приложений и прикладного программного обеспечения, а также в машинном обучении и обработке больших данных.
На чем легче всего писать сайт? ›- HTML;
- CSS;
- PHP;
- JavaScript;
- Python;
- MySQL.
- Определиться с основными целями присутствия компании в Сети
- Выбрать и зарегистрировать домен
- Выбрать и оформить хостинг
- Выбрать систему управления сайтом или конструктор
- Купить ssl-сертификат
- Продумать структуру и навигацию сайта
- Дизайн сайта
Сферы применения Python
Python — один из основных языков в продвинутой аналитике данных, Data Science, веб-разработке. Он широко используется в тестировании, для оптимизации рутинных процессов, в веб-скрейпинге, DevOps и даже немного в разработке игр.
- указать URL-адрес, на котором будет работать приложение;
- установить зависимости проекта;
- создать файл passenger_wsgi.py, который будет отвечать за обработку веб-сервером запросов к Django;
- выбрать интерпретатор для домена.
Перечислим условия, которые влияют на заработок Django-разработчика: Квалификация и стаж – junior, middle, senior, team lead. Средний доход программиста с опытом 1-3 года – от 100 до 120 тысяч рублей, 3-6 лет – от 125 до 200 тыс.
Для чего нужен Secret Key в Django? ›SECRET_KEY . Это секретный ключ, который используется Django для поддержки безопасности сайта.