Бесценный опыт:) для других новичков для тех у кого winXP, Python 2.5.2, mod_python 3.3.1, Django 0.96.2, MySQL-python 1.2.2 и т.д.
Влюбился я в одну девушку и чтобы быть к ней поближе, устроился на работу где она и работала, я программист, она - менеджер по кадрам.
Любовь тем не менее прошла достаточно быстро, хотя была очень бурной и сильной. Теперь думаю увольняться или нет. Но рассказ не об этом.
Пришлось изучать новую платформу (Django), и язык новый (Python), при жутком нежелании поначалу, и дикой нехватке рабочего и свободного времени.
Вот и тут возникла новая любовь, настолько сильная, что захотелось послать подальше следующие вещи: PHP, ASP.NET и C#, и теперь, я точно знаю что следующие системы я буду стараться делать не на C#, как было последние несколько нет, а на Python, а если они и сетевые то и с Django (в виде web-приложений). Если нет особых проблем с javascript/ajax/css/, версткой, то вообще красота.
Почему Python и Django.
У меня не было времени, чтобы разбираться во всех тонкостях, нужно было делать. В нашей организации, несмотря на то что на всех системах стоит xp и менять на что то другое не собираются к технологиям Microsoft относятся не очень.
Поэтому запретили делать на ASP.NET, но и требовалось сделать на фреймоворке, причем не на PHP-шном, здесь PHP тоже считают бесперспективным, так что всякие Zend были в пролете, вообщем был выбор или Ruby On Rails или Python On Django.
Ни того ни другого я не знал, Python выбрал потому что он мне пригодится в других вещах. Приходилось, делать и одновременно изучать. Так тоже можно, но теории все равно не хватает.
Некоторые наблюдения, если это поможет хоть одному новичку такому же как я, значит писал не зря:
1. Проблема которую пришлось решать сегодня
Apache 2.0.46 и mod_python для Apache 2.0 ни фига не катят, cannot load module и все такое.
Если есть желание разобраться с этой ошибкой разбирайтесь, я же просто поставил Apache 2.2.29 mod_python для Apache 2.2 и никаких проблем, все стало сразу.
В httpd.conf:
<Location "/">
SetHandler python-program
PythonHandler django.core.handlers.modpython
SetEnv DJANGO_SETTINGS_MODULE settings
PythonDebug On
PythonAutoReload Off
PythonPath "['htdocs', 'C:/Python25/lib/site-packages/django'] + sys.path"
</Location>
Все ложил в htdocs (папка апача по умолчанию) далее прописываем DNS на серваке и не нужно парится с хостами, портами. По умолчанию и так должно все работать по сети.
2. Как я понял проблема №1 для любого новичка, напишу лишний раз хуже не будет.
при разработке используя встроенный сервер “статика”(картинки, css, js) не видны.
Так что ложите их в отдельную папку например static
После этого в urls.py к urlpatterns добавить
(r'^static/(.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT}),
в settings.py соответственно
MEDIA_ROOT = 'static'
MEDIA_URL = ''
ADMIN_MEDIA_PREFIX = '/media/'
Ну и в HTML соответственно указывать путь /static/img/logo.gif или /static/js/bresize.js
при переносе на апач в httpd.conf нужно будет добавить
<Location "/static/">
SetHandler None
</Location>
3. Как я понял проблема №2 для любого новичка - кодировка.
Народ используйте utf-8, если делаете с ноля тем более!
В скриптах Python в начале файла, добавляете:
В HTML-шаблонах:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Файлы тоже полезно сохранять как utf-8 а не ANSI:)
Для базы (я использовал MySQL):
При создании таблицы не забывайте про
CHARACTER SET utf8 COLLATE utf8_general_ci;
Если не используете ORM, как я то и
cursor.execute("SET NAMES utf8")
Если у вас данные передаются в шаблон например в виде списка, то перебираете в цикле for иначе у вас вместо русских символов будет что-то вроде /x8383/x3434, это гораздо лучше чем ????? конечно:) но может испугать поначалу..
т.е :
{% for folder in folders %}
...{{ folder.0 }}..... {{ folder.1 }}
{% endfor %}
4. Для списков мультивыбора или групп checkbox-ов, используем getList, например:
grpGroups=request.POST.getlist('grpGroups')
Остальное все специфично и решалось как правило заглядыванием в учебник, документацию и
http://www.cargo.caml.ru/djangobook/ - Вещь!
P.S. Все что я написал, не значит что так и надо делать, я такой же новичок как и вы, и ничего еще не знаю про Python и Django, просто так как сделал я, заработало.