2014-01-11 3 views
1

У меня есть этот кусок кода в моем views.py для приложения Джанго:где я ограничен?

for i in range(0,10): 
    row = cursor.fetchone() 
    tablestring = tablestring + "<tr><td>" + row[0] + "</td><td>" + + str(row[3]) + "</td></tr>" 

Это прекрасно работает, когда я загрузить страницу, но если изменить диапазон до (0,20) или что-нибудь выше, я просто получите пустую страницу. Мой вопрос: что вызывает это ограничение? Это что-то с python или django или с хостом (pythonanywhere)?

Кроме того, я только начинаю с django, и я понимаю, что это не лучший код. Если у вас есть предложения сделать его более аккуратным или более эффективным, они будут оценены.

Спасибо за помощь

Edit: Вот мой запрос:

cursor.execute("""SELECT title, movie_url, movie_id, cScore FROM movies""") 
+2

Пожалуйста, покажите свой SQL-запрос. У вас есть причина использовать курсор над ORM django? – Yossi

+0

Я добавил запрос. Я не знаком с django ORM. Что оно делает? – connor

+0

Какой http-статус вы получаете, когда страница возвращается пустым? –

ответ

3

вы действительно должны использовать django orm и писать эти таблицы наценки в template, следовать этому tutorial, чтобы получить основные понятия

+0

Я просто быстро просмотрел этот учебник. Есть ли способ сделать модели, используя данные, которые я сейчас имею в mysql db? – connor

+0

см. Https://docs.djangoproject.com/ru/dev/howto/legacy-databases/ –

+0

Модель не описывает данные, содержащиеся в базе данных, только схемы таблиц. Так что да, у вас не должно быть проблем. –

1

Мое первое предположение заключалось в том, что существует менее 20 строк, поэтому после того, как вы закончите их, row будет None, и ваша попытка индексировать его вызовет исключение.

Что касается улучшения кода:

Как Йоси предложил, вероятно, вы должны пойти с ОРМ. ORM (Object Relational Mapper) позволяет вам обращаться к базе данных более объектно-ориентированным образом, что позволяет сделать более чистый код, а также избегать ошибок, связанных с выводом аргументов (с другой стороны, это может быть не идеально, если вы хотите создавать действительно сложные запросы, поскольку этот SQL по-прежнему является лучшим IMHO).

Я также согласен с Гаем в том, что вы должны использовать систему шаблонов вместо конкатенации строк HTML.