Найти - Пользователи
Полная версия: курс "молодого бойца" под виндОзой, проблемы кодировок
Начало » Django » курс "молодого бойца" под виндОзой, проблемы кодировок
1
gut
есть цель: переползти с виндОзы на ОС линукс, но для начала необходимо рабочий инструмент, существующую БД на M$-Акцеце, переписать средствами линукс и забыть про M$, как про кошмарный сон

по рекомендации бывалых остановились на следующем: сервер на debian, база на PostgreSQL, инструмент - python + Django
изучение и установки ведутся паралельно методм “погружения” :) без предварительного вычитывания и посещения курсов и пр. обучающих фичей, клавиатура и гвайд рядом, изучение через руки - поехали:

установлен в локалке сервер отдельным компом для тренировок: debian (etch-стабильный) + PostgreSQL + Python + Django + все что нужно для их совместной работы, совместная работа пока не налаженна из-за отсутствия знаний (пока в полете)

для быстрейшего изучения инструментов, под виндОзой (XP SP2) был установлен Python и Django.
установка проводилась по рекомендациям статьи из блога “SEO Empire”, обязательно внимательно прочитать, два ньанса:
- прописать пути в переменной PATH сразу после установки Python (C:\Python25;C:\Python25\Scripts)
- виндОзу перегружать не нужно !!! а только приложение из которого запускается терминал командной строки

что касается Django:
поднять этого зверька мне помогли: пиво, джаз от самого Джанго и, в основном, статья “Среды Web-разработки на языке Python, Часть 1: Разработка для Web с помощью Django и Python” уважаемого Йена Маурера, хотя там приведен пример для линукса - Python+SQLite+Django, но есть совпадение по составу, потому что для виндОза в пакете инсталятора Python в комплекте уже был SQLite. оч интересная статья, как для новичка.

как пользовался статьей Йена:
читать все подряд, помогает понять механизм инсталяции, повторение - мать понятно чего

начинаем действовать с раздела “Проекты и приложения в Django”:
- запускаем в виндОзе окно командной строки: кнЬопка “Пуск” -> “Выполнить” -> набрать в окошке “Открыть” три буквы “cmd” далее - клава “Enter”, или кто юзает ТоталКомандер, в строке для команд нацарапь теже три буквы, и опять же - “Enter”
фсьоооо … мы в чорном космосе, без звезд, без ансамбля … сам бля … с мигающим курсором и приглашением командной строки типа: C:\Documents and Settings\User>.
переходим на рабочий диск где будет создаваться проект, БД и пр. у меня это все на диске D:, аналогично и скомандовал - “d:” клава “Enter”, чтоб перейти в корень диска набраем “cd \” клава “Enter”…
в статье приглашение командной строки - линуксовое, потому командой является все что находится за символом “$” без пробела (эт пояснение для заядлых виндОзников, по началу сам “бока” выдавал), кста, если прописаны пути к питону в переменной PATH, о чем я писал выше, то набирать в строке “paython” - команда вызова интерпретатора, не обязательно, просто начинаем с названия скрипта и т.д., следуем по инструкции добуквенно …

- обращаю внимание на “Листинг 5. Использование manage.py с параметром startapp”, в примере указано - “python manage.py startapp jobs”, можна написать и выполнить так - “manage.py startapp jobs”, эфект тотже, продолжаем следовать инструкции

- ахтунг !!! см. “Листинг 8. Конфигурирование базы данных в settings.py” строка:
DATABASE_NAME = ‘/path/to/dev/djproject/database.db’
обращаю внимание на то как прописан путь к базе !!! это - для линукса, потому шо там нет понятия дисков как это привычно в виндОзе, там все - каталог. к примеру для виндОзы, если вы расположились перед стартом проекта в корне диска “D:”, эта строка будет выглядеть так:
DATABASE_NAME = ‘d:/djproject/database.db’
и еще раз ахтунг: наклонные палочки наклонены правильно !!! а не так как это принято в виндОзе, если вы поставите вместо слешей (/) бэкслеши (\) то будете еще оч долго рассматривать в листингах разные эрроры - 100% :)
… рулим дальше

останавливаемся на разделе “Наборы запросов”
все что под этой вывеской в виндОзе правильно работать не будет, пока, но до каких пор я не выяснил, потому что и не выяснял. раздел стоит прочитать для того чтобы понять как близок вам питон, но к сожалению в виндОзе в командной строке питона (эт када приглашение такое - “>>>”) эти команды не срабатывают… пока !!! но надежда выдресировать еще теплится :)

добрались до пункта назначения - “Инструмент администратора”
читаем внимательно, вот только прописать подклассы Admin для классов Job и Location в файлО models.py можна сразу, а в файле urls.py просто снять знак комента с соотвествующей строки, дописывать в конец “.admin” не стоит, наспотыкался :)
не забудте после всех редактирований дать командочку “manage.py syncdb”, обязательно. и это все мы еще командуем из окошка командной строки виндОза !!! редактирование производится любым текстовым редактором типа Notepad, сам юзаю Emeditor.

вот терь мона запустить тестовый сервер джанги “manage.py runserver”
- грузим любой виндОзный броузер и пишем в строке адреса: http://localhost:8000/admin
… всЬО, мы попали …. в инструмент администратора
знач джанга стала !!! салют, шампанское, аплодисменты и … сломанные глаза об гвайды

но не долго радовались… при вводе данных виндОзная кирилица вызывает у джанги/питона/СКУЛайта полное отвращение и приходится наблюдать длинные листинги отладчика, первое впечатление - нужен летчик-конвертор кодировок, рекомендации найденные у рускоязычных джангистов не помогли, а в забугорных примочках не силен, словарь нужен, кста у них, наверно, такой проблемы то даж нет :(

так что пока мы люди не местные, ПРОШУ посодействовать бывалых в решении вот такой вот незадачи с недружелюбием кодировок UTF8 и win1251 в приложении к джанге/питону/СКУЛайту под виндОзой

благодарю за прчтение :)
Ferroman
но не долго радовались… при вводе данных виндОзная кирилица вызывает у джанги/питона/СКУЛайта полное отвращение и приходится наблюдать длинные листинги отладчика, первое впечатление - нужен летчик-конвертор кодировок, рекомендации найденные у рускоязычных джангистов не помогли, а в забугорных примочках не силен, словарь нужен, кста у них, наверно, такой проблемы то даж нет
Хе, а самого главного - не написал :)
Какие именно рекомендации пробовали? Что именно говорит отладчик?
Джанга из транка? Если нет - то какая версия Джанги?
А вообще, для нормальной работы юникода в джанге:
1. Всё создавать в UTF8
2. # -*- coding:utf-8 -*- в заголовке скрипта.
3. u“Строка” при использовании строк в коде (в моделях, например).
4. __unicode__ вместо __str__ в моделях

Всё, должно работать без проблем.
gut
Ferroman, спасиб за внимане

и так, попорядку:

– о рекомендациях - по причине стесненности во времени все изыскания проводились в торопях, к сожалению уже не могу в хистори отыскать эти статейки, кста там автор один, и в его блоге все обсуждения, постараюсь повторить пройденный путь и найти этот блог, но не обещаю, я его вырыл токо во второй вечер:)

– тест-сервер джанги через интерфейс броузера позволяет доступ к модели БД и пр.
вот именно при введении данных на кирилице в броузере и происходит описанный выше “бок”, вернее ввод и сохранение происходит корректно


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

!!! что из отладочной инфы засветить, а то там наверно строк … немерянно … может достаточно трека ?

– как я писал, дистр пайтона для винды и джанго качал самые последние версии: paython 2.5 для win32 с сайта - http://www.python.org/download/ и django отсюда - http://code.djangoproject.com/svn/django/trunk/

– вследствии того что с питоном лично не знаком, никаких своих скриптов я еще не написал, а только пользовался тем что предоставил закачанный дистр django/trunk, задача была посмотреть на сколько быстро удостся установить и понять как работает (рашилась положительно), пользовался только тем что уже предоставляет сам тест-сервер джанги

с уважением
Ferroman
Давайте код модели и шапку ошибки, которую джанго выдаёт.
gut
сорь, про “код модели” не понял

а шапка вот:
/*
UnicodeEncodeError at /admin/jobs/location/1/
'ascii' codec can't encode characters in position 6-12: ordinal not in range(128)Request Method: GET
Request URL: http://localhost:8000/admin/jobs/location/1/
Exception Type: UnicodeEncodeError
Exception Value: ‘ascii’ codec can't encode characters in position 6-12: ordinal not in range(128)
Exception Location: C:\Python25\Lib\site-packages\django\utils\encoding.py in force_unicode, line 53
Python Executable: C:\Python25\python.exe
Python Version: 2.5.2
Python Path:
Server time: Tue, 8 Jul 2008 17:38:29 +0300
*/
Ferroman
У вас есть джанго-апликуха jobs. В ней есть файл называется “models.py” - это ORM абстракция. Его код и приведите.

PS. Вы бы с книги или туториала начали , а уже потом что-то спрашивали… А то, судя по всему, Вы явно не с того конца начали, и доки какие-то странные читали…
gut
:) возможно и не с того … но оч было похоже на туториал

код модуля models.py
/*
from django.db import models

# Create your models here.
class Location(models.Model):
city = models.CharField(max_length=50)
state = models.CharField(max_length=50, null=True, blank=True)
country = models.CharField(max_length=50)

class Admin:
list_display = (“city”, “state”, “country”)

def __str__(self):
if self.state:
return “%s, %s, %s” % (self.city, self.state, self.country)
else:
return “%s, %s” % (self.city, self.country)

class Job(models.Model):
pub_date = models.DateField()
job_title = models.CharField(max_length=50)
job_description = models.TextField()
location = models.ForeignKey(Location)

class Admin:
list_display = (“job_title”, “location”, “pub_date”)
ordering =
search_fields = (“job_title”, “job_description”)
list_filter = (“location”,)

def __str__(self):
return “%s (%s)” % (self.job_title, self.location)

*/

кста, если посмотрите на ссылки что я приводил, так эт и есть “туториал”, ток переведенный уже… один к одному !!!
Йен Маурер - автор этого “туториала”, похоже
Ferroman
1. И спользуйте тег code при размещении кода.
2. Замените в моделях
def __str__(self):
на
def __unicode__(self):
Проверяйте.
что с питоном лично не знаком
Познакомится с питоном.
И бегом читать официальные доки и книгу.

А вот после хотя бы общего ознакомления что-то делать :)
gut
Ferroman
ваааау :)
работает
огромное спасибо
окунаюсь в дальнейшее изучение
вы стали моим вдохновителем !!!

с уважением
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB