Python и Unicode - PullRequest
       1

Python и Unicode

0 голосов
/ 24 августа 2011

Я изучаю Django через учебники на их веб-сайте, и у меня возникает странная проблема.На этом шаге , когда я добираюсь до части, где я ввожу фрагменты юникода, чтобы

>>> Poll.objects.all()

вернул не это

[<Poll: Poll object>]

, а что-то вроде этого

[<Poll: What's up?>]

по какой-то причине код работает только тогда, когда я копирую и вставляю его, а не когда я его печатаю. Есть идеи, почему это происходит?

::

Итак, вот код, который не будет форматироваться в комментариях:

from django.db import models

import datetime

class Poll(models.Model):
    question = models.CharField(max_length=200)
    pub_date = models.DateTimeField('date published')
    def was_published_today(self):
        return self.pub_date.date() ==datetime.date.today()
    def __unicode__(self):
    return self.question

class Choice(models.Model):
    poll = models.ForeignKey(Poll)
    choice = models.CharField(max_length=200)
    votes = models.IntegerField()
    def __unicode__(self):
        return self.choice

Ответы [ 2 ]

1 голос
/ 03 января 2012

Если вы используете TextMate, отметьте Soft Tabs: 4 и используйте команду Cleanup WhiteSpaces. Сработало 4 мета!

1 голос
/ 24 августа 2011

Должно быть вызвано смешанным отступом табуляции / пробела ...

Ваш код, вставленный в комментарий, был испорчен, но я взглянул на исходный код HTML и обнаружил, что введенные вами строки (в частности, методы __unicode__) имеют отступ с использованием смешанных табуляций / пробелов. Возможно, вы используете редактор, в котором вы установили «ширину табуляции» равной 4, чтобы уровень отступа табуляции выглядел так же, как 4 пробела. Однако интерпретатор python рассматривает эквивалент табуляции как 8 пробелов (два уровня отступа). Поэтому введенные вами строки (или строки с табуляцией) имеют неправильный отступ.

Здесь я отмечаю все вкладки в вашем коде как "<T>"

from django.db import models

import datetime

class Poll(models.Model):
    question = models.CharField(max_length=200)
    pub_date = models.DateTimeField('date published')
    def was_published_today(self):
    <T> return self.pub_date.date() ==datetime.date.today()
<T> def __unicode__(self):
<T> <T> return self.question

class Choice(models.Model):
    poll = models.ForeignKey(Poll)
    choice = models.CharField(max_length=200)
    votes = models.IntegerField()
    def __unicode__(self):
<T> <T> return self.choice

НИКОГДА не смешивайте пробелы и символы на любом языке. И в Python мы всегда используем 4 пробела для отступа, как рекомендовано PEP-8 .

Какой бы редактор вы ни использовали, Google для того, чтобы сконфигурировать его для автоматического расширения вкладок на 4 пробела.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...