Система Orphus

Python + Django Framework 1.7; 1.8; 1.9; 2.0 - школа практического программирования В. Бовсуновского (2013-2017).



  Описание курса

Будем ли мы изучать Django с ноля и разбирать по ктосточкам? Да. 

Будем ли мы работать со средой разработки? Да?

Наша задача реальный портал. Может будет сложновато проделать эти уроки, но нужно проделать. Потом будет легко. Необходимо кровь с носу получить первый опыт работы с сервером. Так как наша цель реальный сайт, то он должен работать на реальном сервере.

Хотите научится писать на Python сайты, сервисы, программы и всё это в веб, тогда нужно и делать реальный сайт. Ещё не один человек не научился программировать без конкретной задачи.

 

На Джино планируется установка Python 3. Читать.

 

Обратите внимание на этой странице видео уроки. Это плеер известного сайта uppod, но некоторые пишут иногда, что не загружаются видео. Вот вам секрет. Скачайте яндекс Брайзер и включите в нём турбо режим, тогда страница запускается, но не загружаются ролики, пока не щёлкнешь на само видео, так успешно всё просмотрите.

 

Обязательно почитайте почему Python? (очень важно, понимать что язык выбран верно). Не сомневайтесь Python то, что нужно.

 

 



  Видео уроки

Просьба прочитать изменения прошедшие на Джино и применить эти изменения при установке на сервер.

Описал Сергей Гришин, наблюдайте за его практикумом.(http://tut.sergg57.ru/)- наш участник.

////////////////////////////////////////////////

В настоящее время изучаю Python и Django. Двигаюсь по плану, по шагам. Прошёл Python на pro365.net, затем Django 1.6. на  том же портале. Теперь на портале spb-tut.ru изучаю Django 1.7. 
Стараюсь заниматься каждый день, но не всегда это получается. Примеры в уроках отрабатываю как в среде PyCharm, так и на сервере. При этом периодически возникают некоторые проблемы, связанные с тем, что с тех пор, как писались уроки на сервере произошли некоторые изменения.
Так были проблемы с установкой виртуального окружения под различные версии Django.
C последнего вашего урока по установке виртуального окружения под версию Django 1.9. на сервере Джино произошли некоторые изменения и для того, чтобы нармально устанавливались различные версии Django (1.6; 1.7; 1.8; 1.9) нужно при установки виртуального окружения использовать не команду:
- bash-4.1$ virtualenv-2.7 virtualenv/MyEnv19(16;17;18)
а команду:
virtualenv-2.7 --system-site-packages virtualenv/MyEnv19 (16;17;18)
тогда устанавливается и работает любая более ранняя версия Джанго.
Чтобы решить эту проблему мне пришлось обращаться в службу поддержки сервера. Они помогли решить эту проблему вышеуказанным способом.
Аналогичная проблема возникла при установки панели Django Debug Toolbar – на версию Джанго 1.7. – панель так и не встала. Текущая версия панели – 1.6. уже не работает с Джанго 1.7. (только с версией Джанго выше 1.8.), а предыдущая панель версии1.4. тоже не захотела работать на сервере, хотя в среде PyCharm – работает без проблем. Служба поддержки решить этот вопрос не смогла – говорят проблема в модуле панели.
Пришлось на сервере ставить панель Debug Toolbar только в тех проектах, которые делаю на более поздних версиях Джанго (1.10 – например.).
Однако, эти проблемы позволяют более глубже разобраться в материале. Так, что все нормально. 


Как делаете уроки-? Смотрю ваши видео уроки и выполняю все как в среде, так и на сервере. Выполняю ДЗ, иногда иду чуть дальше, чем требуется в ДЗ. Так в ДЗ по формам – по документации разобрался – как через форму передать заданное пользователем в форме количество строк (объектов из базы данных), которые он хочет увидеть, и передать их в функцию, которая через order_by (по срезу) выведет их в шаблоне. То есть пользователь сам определяет сколько объектов из базы данных он хочет увидеть на странице.
 
Как вы повторяете-? Честно говоря, повторяю по мере необходимости. Так, чтобы вспомнить работу со срезами – обращался не к урокам по Питону, а к своим интеллект картам, которые составил по всему курсу по Питону. Это позволяет экономить время при повторении. 
Если что-то нужно вспомнить по Джанго – обращаюсь к записям в Лидер Таск, которые веду по вашим рекомендациям, по мере изучения Джанго.
 
И ответьте на главный вопрос, последовательность, уделяете ли вы последовательности значение?
Все делаю  последовательно по плану и по шагам, хотя конечно иногда некоторые уроки хочется пропустить, но сдерживаю себя и не перепрыгиваю через уроки.


-- 
© 2009-2015 Валерий Бовсуновский - Школа практики Django + Python.

 

 

//////////////////////////////////////////////

 

Внимание. В связи с выходом релиза Django 1.8 в уроках по установке Django

набирать так:

 pip install --upgrade django==1.7.7        (у вас установится Django 1.7.7)

если вы наберёте

 pip install --upgrade django (то установится последняя версия 1,8, есть отличия в настройках)

Установка и настройка 1,8 будет показана отдельно.

///////////////////////////////////////////////////////////

Дополнение к уроку 8. Важно! Прочтите и помните.

при установке базы данных в строке HOST

 'HOST': '127.0.0.1',

Сначала вставьте 127.0.0.1, так как может не работать SSH, после установки баз уберите 127.0.0.1 и оставьте строку пустой, будут базы быстрее работать.

Ну а длее смотрите. У меня потом работает с пустой строкой, если не работает SSH с пустой строкой, то опять вписывайте 127.0.0.1, пока тестите можно оставить, будет работать, а на боевом проекте лучше убрать, что бы прибавить скорости.

/////////////////////////////////////////////////////////////////////

Урок 1. Где будем делать сайт?

Зарегистрироваться на хостинге Jino

 

 

Урок 2. Подключаем услуги.

 

 

Урок 3

ссылку на Джино справку

 

 

Урок 4. сайт putty.

перейти на сайт putty

 

 

Урок 5.

 

 

Урок 6. Команды putty.

смотреть команды putty

 

 

Урок 7. Настраиваем путь статики.

 

 

 

Урок 8. Подключаем базы данных MySql.

 

 

 

settings.py


'ENGINE': 'django.db.backends.mysql',
        'NAME': '',
        'USER': '',
        'PASSWORD': '',
        'HOST': '', #оставляем эту строку пустой, если не работает SSH, то вписываем 127.0.0.1
        'PORT': '3306',



     

 

 

 

Урок 9. Настраиваем django.wsgi и .htaccess.

 

 

 

 

django.wsgi


import os, sys
virtual_env = os.path.expanduser('~/virtualenv/MyEnv')
activate_this = os.path.join(virtual_env, 'bin/activate_this.py')
execfile(activate_this, dict(__file__=activate_this))
sys.path.insert(0, os.path.join(os.path.expanduser('~'), 'django/renewed'))
os.environ['DJANGO_SETTINGS_MODULE'] = 'renewed.settings'
import django.core.handlers.wsgi
#application = django.core.handlers.wsgi.WSGIHandler()

from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()



     

 

 

 

.htaccess


AddHandler wsgi-script .wsgi
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /django.wsgi/$1 [QSA,PT,L]



     

 

 

 

Урок 10. Собираем статические файлы.

 

 

Урок 11. Подключаем базу данных MySql.

 

 

Урок 12. Ставим django-suit.

 

 

settings.py


TEMPLATE_CONTEXT_PROCESSORS = (
    "django.contrib.auth.context_processors.auth",
    "django.core.context_processors.debug",
    "django.core.context_processors.i18n",
    "django.core.context_processors.media",
    "django.core.context_processors.static",
    "django.core.context_processors.tz",
    "django.contrib.messages.context_processors.messages",  
    "django.core.context_processors.request", #без него не работает админка
)  

     

Обратите внимание обновилась django-suit

на данный момент нужно добавить настройки

from django.conf.global_settings import TEMPLATE_CONTEXT_PROCESSORS as TCP

TEMPLATE_CONTEXT_PROCESSORS = TCP + (
    'django.core.context_processors.request',
)

Так как django-suit не стоит на месте, то лучше сверяться с документацией:

http://django-suit.readthedocs.org/en/develop/

 


 

Пожалуйста в контекстных процессорах закоментируйте строку:

"django.core.context_processors.tz"

Потом установите пакет и тогда раскорментируете.

pip install pytz
Это дополнительный пакет для работы со временем. Возможно он вам не нужен сейчас.

 

Урок 13. Ставим Pillow (библиотека для работы с изображениями).

 

 

 

Урок 14. Запомним настройки.

 

 

settings.py

 


DEBUG = True

TEMPLATE_DEBUG = True

ALLOWED_HOSTS = []
     

 



  Рекомендации

Важно, очень частая ошибка. Если собираемся писать комментарии на русском, то пропишем кодировку, в каждом файле в самом верху, где будете писать. Важно. (иначе ошибку будете искать)
# -*- coding: utf-8 -*-

 

Наша участница Нина Никитенко сделала алгоритм. Алгоритм Нины ниже, так же до кучи неплохой мануал, для себя писал doncusemen, прочитайте, там есть пояснения тоже.  http://spb-tut.ru/mirpy/detail/7/

ШПАРГАЛКА ПО ШАГУ 2.
1. Создаем новое виртульное окружение (если нужна другая версия джанго - иначе используем созданное и начинаем с п. 2)
     virtualenv-2.7 virtualenv/newEnv
2. Активируем виртуальное окружение:
     . virtualenv/newEnv/bin/activate
3. Устанавливаем свежую версию Джанго: (пропустить этот пункт, если уже установлена)
    pip install --upgrade django
4. В папке с проектами джанго создаем новый проект :
    cd django
    django-admin.py startproject имя_проекта
Например:
    django-admin.py startproject dj_proj
5. В админке jino, открываем Файловый менеджер.  В папке domains, создаем папку-поддомен: у меня, есть домен nprogram.ru, я создаю папку django.nprogram.ru
Далее открываем файл с настройками проекта: django/имя_проекта/имя_проекта/settings.py
У меня, например, django/dj_proj/dj_proj/settings.py

Добавляем в конец файла строку: 
STATIC_ROOT =  os.path.join(os.path.expanduser('~'), 'domains/django.nprogram.ru/static/')
6. В директории домена, в котором будет находится сервер, у меня это django.nprogram.ru, создаем файл django.wsgi и записываем в него строки (поменяйте имя проекта на имя вашего проекта)

     import os, sys
     virtual_env = os.path.expanduser('~/virtualenv/newEnv')
     activate_this = os.path.join(virtual_env, 'bin/activate_this.py')
     execfile(activate_this, dict(__file__=activate_this))
     sys.path.insert(0, os.path.join(os.path.expanduser('~'), 'django/имя_проекта'))
     os.environ['DJANGO_SETTINGS_MODULE'] = 'имя_проекта.settings'
     from django.core.wsgi import get_wsgi_application
     application = get_wsgi_application()

У меня имя_проекта - dj_proj

7. В той же папке создаем еще один файл — .htaccess (обратиие внимание перед названием точка, так должно быть)— и пишем в него следующие директивы:
AddHandler wsgi-script .wsgi
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /django.wsgi/$1 [QSA,PT,L]

8. Настройка mysql. В админке jino заходим Управление - Управление MySql и создаем новую Базу. У меня это,например, nina_djproj.
Когда БД появится в списке, Щелкните по имени пользователя (у меня nina) и установите пароль, без этого у меня не работало.
9. Открываем файл с настройками проекта: django/имя_проекта/имя_проекта/settings.py

У меня, например, django/dj_proj/dj_proj/settings.py Меняем настройки: (вводите ваши данные, а не мои)

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'nina_djproj',
        'USER': 'nina',
        'PASSWORD': '*****',
        'HOST': '127.0.0.1',
        'PORT': '3306',
}
}
10.  Переходим в папку проекта, выполняем команды (по ssh)
cd имя_проекта
Например, 
cd dj_proj
python2.7 manage.py collectstatic
python2.7 manage.py makemigrations 
python2.7 manage.py migrate
11.Создаем суперпользователя для админки командой:
python2.7 manage.py createsuperuser
12. Украшаем админку:
pip install django-suit
В настройках settings.py ее надо подключить в INSTALLED_APPS (добавить 'suit',)
Добавить в settings:
TEMPLATE_CONTEXT_PROCESSORS = ( "django.contrib.auth.context_processors.auth", "django.core.context_processors.debug", "django.core.context_processors.i18n", "django.core.context_processors.media", "django.core.context_processors.static", "django.core.context_processors.tz", "django.contrib.messages.context_processors.messages", "django.core.context_processors.request", #без него не работает админка
)
13. Выполняем: 
python2.7 manage.py collectstatic
python2.7 manage.py makemigrations
python2.7 manage.py migrate

14. Ставим pillow - библиотека для работы с изображениями

pip install Pillow

 




 

В журналах ошибок (Логах) Вы можете видеть сообщение: 
KeyError: 'PATH'
Данная ошибка возникает при отсутствии указания переменной путей в настройках виртуального окружения. В данном случае необходимо откорректировать следующие параметры в файле "activate_this.py": old_os_path = os.environ['PATH'] os.environ['PATH'] = os.path.dirname(os.path.abspath(__file__)) + os.pathsep + old_os_path

 

Без проблем Валерий, ВОТ полный код ФИШКА в том что поддержка закоментила две строки!

"""By using execfile(this_file, dict(__file__=this_file)) you will
activate this virtualenv environment.

This can be used when you must use an existing Python interpreter, not
the virtualenv bin/python
"""

try:
    __file__
except NameError:
    raise AssertionError(
        "You must run this like execfile('path/to/activate_this.py', dict(__file__='path/to/activate_this.py'))")
import sys
import os

#old_os_path = os.environ['PATH']
#os.environ['PATH'] = os.path.dirname(os.path.abspath(__file__)) + os.pathsep + old_os_path
base = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
if sys.platform == 'win32':
    site_packages = os.path.join(base, 'Lib', 'site-packages')
else:
    site_packages = os.path.join(base, 'lib', 'python%s' % sys.version[:3], 'site-packages')
prev_sys_path = list(sys.path)
import site
site.addsitedir(site_packages)
sys.real_prefix = sys.prefix
sys.prefix = base
# Move the added items to the front of the path:
new_sys_path = []
for item in list(sys.path):
    if item not in prev_sys_path:
        new_sys_path.append(item)
        sys.path.remove(item)
sys.path[:0] = new_sys_path


 

 

Если возникает ошибка 502, что деалать описал здесь.

http://spb-tut.ru/demo/5/

Ещё небоьшое дополнение. Бывает на Джино такая вещь:

Валерий, добрый день.
Подумал - может кому-нибудь будет полезно.
На этапе сбора статических файлов возникла ошибка:

$python2.7 manage.py collectstatic
...
...не сохранился вывод (не вовремя закрыл терминал)
...далее последняя строчка вывода с ошибкой (не хватает модуля) 
django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: No module named MySQLdb

Решение установить модуль:

$pip install mysql-python
$python2.7 manage.py collectstatic
далее по Вашей инструкции)

 


Общая рекомендация такая. Если, что с Джино не получается, то поступите слдеующим образом.

Перейдите в поодержку, в аккаунте есть знак спасательного круга в правом верхнем углу, составте заявку.

Вот как правильно составить заявку по шаблону:

Здравствуйте. У меня не работает Django выдаёт ошибку .........

Виртуалльное окружение 

virtualenv

папка для проектов

django

 

проект

renewed

домен

exemple.com

 

Ну разумеется. у вас могут быть свои названия.

Джино обязательно поправит и разъяснит.

Хотите быстрее. Составть заявку и в разделе составления заявок. есть телефон, позвоните и назовите номер, заявкой займуться сразу же.

 

 

 

 

Почему в школе официально рссмотрен только Джино?

 

Некоторые меня обвиняют, что мол я ограничиваю людей в выборе. Я им говорю так.

Если не нравится Джино, в тихую подключите свой хостинг, но рекламы других хостингов в школе не будет и вот почему.

Пока просто вы понимаете таких вещей, что стабильность это главное и главное что бы у хостера были свои дата центры и хостинг работал на улучшением и если не хватаем места можно было отвезти свой сервер к ним и забыть о гемморое.

 На Джино вас не пошлют, а будут решать проблему. И не пишите мне что бывают проблемы. Проблемы бывают у всех хостингов, важно как хостинг их решает, с 2008 года, я увидел это на практике.

Был случай в моей практике, когда в пердыдущей школе давал возможность сбрасывать разные хостинги, так вот один из хостингов пропал, а у людей были клиенты и люди оказались в ж..., потом три месяца возвращаи сайты. Кстати, хвалённый разрекламированный, америкосский (очень продвинутый, . Пока не дошло дело до точто что описал. ). Научитесь любить наше исконное, русское.

Так вот ребята, я не дам больше что бы такое произашло. И что бы вы остались без бизнеса. Поэтому в школе вопрос насчёт хостинга закрыт, официально только Джино. Насильственно никто вас не заставляет, не нравится Джино в тихую подключите свой хостинг и сами разбирайтесь, но если что -то случится и хостер пропадёт, потом не вздыхайте. Меня ни в чём убеждать не надо, я доверяю годам своего опыта с Джино. Знаете я как Джино нашёл. Пошёл с другом выгуливать собаку в поле и нашёл объявление, было это в 2008 году. Я решил попробовать, а дальше всё выснили годы практики. Помните главное у хостинга должны быть свои дата центры обязательно.

 

 

 

 



  20 октября 2014 г. 22:50




Школа программирования Бовсуновского



© 2016 Школа практики Django + Python. оферта

Официальный сайт Python Официальный сайт Django . .
пользовательское соглашение