Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 15, 2016 11:20:53

Ennjin
Зарегистрирован: 2016-09-20
Сообщения: 18
Репутация: +  1  -
Профиль   Отправить e-mail  

Вопрос по бутылке(bottle)

Всем привет. Хотел бы узнать, можможно ли наследовать шаблоны из одного tpl файла в другой?
И есть ли в нем шаблонные тэги, чтобы не хардкодить ссылки, например

c url разобрался. Теперь хотелось бы узнать, если ли блоки как в джанге?
{% block content %}
{% endblock %}

что то вроде такого?

И еще. Как на бутылке писать модели и использовать их в шаблоне? Ну и в целом, в какую сторону копать, какую литературу читать

Отредактировано Ennjin (Ноя. 15, 2016 17:31:53)

Офлайн

#2 Ноя. 17, 2016 12:59:18

slav0nic
Команда
От: dp.ua
Зарегистрирован: 2006-05-07
Сообщения: 2252
Репутация: +  40  -
Профиль   Отправить e-mail  

Вопрос по бутылке(bottle)

Офлайн

#3 Ноя. 19, 2016 17:47:56

Ennjin
Зарегистрирован: 2016-09-20
Сообщения: 18
Репутация: +  1  -
Профиль   Отправить e-mail  

Вопрос по бутылке(bottle)

Еще один вопрос. Как вывести в шаблон все записи из sqlite базы? у меня выводи только последнее.
код приложения

 def index():
	con = sqlite3.connect('data.db')
	cur = con.cursor()
	
	cur.execute("SELECT title FROM post")
	title = cur.fetchall()
	for value in title:
		title = '{0}'.format(value[0])
	cur.execute("SELECT text FROM post")
	text = cur.fetchall()
	for value in text:
		text = '{}'.format(value[0])
	cur.execute("SELECT author FROM post")
	author = cur.fetchall()
	for value in author:
		author = '{0}'.format(value[0])
	
	cur.close()
	return dict(url=url, title=title, text=text, author=author)

код шаблона
<h1>{{title}}</h1>
<p>{{text}}</p>
<p>Автор: {{author}}</p>

Понимаю что нужен цикл, но как именно его реализовать, если переменные три?

Офлайн

#4 Ноя. 20, 2016 02:01:54

slav0nic
Команда
От: dp.ua
Зарегистрирован: 2006-05-07
Сообщения: 2252
Репутация: +  40  -
Профиль   Отправить e-mail  

Вопрос по бутылке(bottle)

вы какую-то хрень написали

 SELECT title, author, text FROM post;
и пройтись циклом в шаблоне

Офлайн

#5 Ноя. 20, 2016 08:05:38

Ennjin
Зарегистрирован: 2016-09-20
Сообщения: 18
Репутация: +  1  -
Профиль   Отправить e-mail  

Вопрос по бутылке(bottle)

slav0nic
вы какую-то хрень написали

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

Офлайн

#6 Ноя. 20, 2016 08:46:50

Ennjin
Зарегистрирован: 2016-09-20
Сообщения: 18
Репутация: +  1  -
Профиль   Отправить e-mail  

Вопрос по бутылке(bottle)

<div id="3">
<h1>Тест</h1>
<p>Тест</p>
<p>Автор: Тест</p>
</div>
<div id="2">
<h1>Тест</h1>
<p>Тест</p>
<p>Автор: Тест</p>
</div>
<div id="1">
<h1>Тест</h1>
<p>Тест</p>
<p>Автор: Тест</p>
</div>
Для див блока я добился того, что мне нужно. Осталось сделать так, чтобы контент внутри генерировался так же попорядку, как и id Блоки, а не только последний, который я добавил. При попомщи цикла сделать это не получается.

Код приложения.
 @route('/')
@view ('index')
def index():
	con = sqlite3.connect('data.db')
	cur = con.cursor()
	cur.execute("SELECT title, text, author FROM post")
	while True:
		result = cur.fetchone()
		if result == None:
			break
		title = result[0]
		text = result[1]
		author = result[2]
	cur.execute("SELECT id FROM post")
	post_id = cur.fetchall()
	post_id.sort(reverse=True)
	
	cur.close()
	
	return dict(url=url, title=title, text=text, author=author, post_id=post_id)

Код разметки
%for value in post_id:
%for id in value:
<div id="{{id}}">
<h1>{{title}}</h1>
<p>{{text}}</p>
<p>Автор: {{author}}</p>
</div>
%end
%end

Офлайн

#7 Ноя. 20, 2016 12:06:41

slav0nic
Команда
От: dp.ua
Зарегистрирован: 2006-05-07
Сообщения: 2252
Репутация: +  40  -
Профиль   Отправить e-mail  

Вопрос по бутылке(bottle)

дичь какая-то, а что, сразу id нельзя выбрать? да и к чему while True ещё и с сортировкой в питоне

во-первых пройдите базовый курс по sql, сортировать надо в sql запросе
во-вторых есть https://docs.python.org/3/library/sqlite3.html#sqlite3.Connection.row_factory для того чтоб можно было обращаться к элементу Row через аттрибут, а не индекс поля

в шаблон rows надо отдавать (желательно лимитом/пагинацией)

Офлайн

#8 Ноя. 21, 2016 11:05:02

Ennjin
Зарегистрирован: 2016-09-20
Сообщения: 18
Репутация: +  1  -
Профиль   Отправить e-mail  

Вопрос по бутылке(bottle)

отсортировал в sql запросе.

 @route('/')
@view ('index')
def index():
	con = sqlite3.connect('data.db')
	cur = con.cursor()
	
	cur.execute("SELECT * FROM post ORDER BY id DESC")
	result = cur.fetchall()
	cur.close()
	
	return dict(url=url, rows=result)
slav0nic
во-вторых есть https://docs.python.org/3/library/sqlite3.html#sqlite3.Connection.row_factory для того чтоб можно было обращаться к элементу Row через аттрибут, а не индекс поля
можно подробнее про этот пункт, и что выводить в шаблон?

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version