Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 12, 2011 16:42:39

Respan
От:
Зарегистрирован: 2011-01-11
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Сервер новостей

Здравствуйте. недавно начал программировать на питоне. Нужно написать сервер добавления/просмотра новостей. Вот что у меня получилось:

#!C:\Program Files\Python27\python.exe
import sqlite3
import json
import time
import cgi
from cgi import escape

print('Content-Type: text/javascript; charset=utf-8')
print('')

def view(ptr, fr, to):

try:
ptr.execute('select date, title, content from news where date >= ? and date <= ? order by date desc',(fr, to))
except:
ptr.execute('select date, title, content from news order by date desc')
temp = ptr.fetchall()
return [
{
'date': escape(date),
'title': escape(title),
'content': escape(content).replace('\n', '<br>')
}
for date, title, content in temp]

form = cgi.FieldStorage(keep_blank_values = True)
infa = {'news': []}
database = sqlite3.connect("news")
pointer = database.cursor()

if 'action' in form:
if form['action'].value == 'add':
pointer.execute('insert into news values (?, ?, ?)',(form['date'].value, form['title'].value, form['content'].value))
database.commit()
if form['action'].value == 'view':
infa['news'] = view(pointer, form['from'].value, form['to'].value)

pointer.close()
print(json.dumps(infa))
Ну и js:
$(function() {

$('#button_show_date').click((function f() {
refreshNews();
return f;
})());

$('#button_add').click(function() {
$.getJSON('/cgi/news.py?' + $('#form_add').serialize(), function() {
refreshNews();
});
return false;
});
});

function refreshNews() {
$.getJSON('/cgi/news.py?' + $('#form_date').serialize(), function(obj) {
var newbie = $('#news').empty();

$.each(obj.news, function (i, v)
{
newbie.append('<div class="separator">');
$('<div>')
.appendTo(newbie)
.append('<span class="title">' + v.title + '</span>')
.append('<p class="content">' + v.content + '</p>')
.append('<span class="date">' + v.date + '</span>');
});
});
}
и HTML:
<!DOCTYPE html>
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>News</title>
<link rel="stylesheet" type="text/css" href="news.css">
<script type="text/javascript" src="jquery-1.4.4.min.js"></script>
<script type="text/javascript" src="news.js"></script>

<body>
<div class="news" id="news">
</div>
<div id="position">
<form id="form_add">
<div>
Date:
<br>
<input type="text" name="date">
</div>
<div>
Title:
<br>
<input type="text" name="title" size="50">
</div>
<div>
Message:
<br>
<textarea class="message" name="content">
</textarea>
</div>
<input type="submit" value="Tweet" id="button_add">
<input type="hidden" value="add" name="action">
</form>
<form id="form_date">
<span>
From
</span>
<input type="text" name="from">
<span>
To
</span>
<input type="text" name="to">
<input type="button" value="Show" id="button_show_date">
<input type="hidden" value="view" name="action">
</form>
</div>
</body>

</html>
Новости добавляются и просматриваются. Но просматриваются только если указанны даты в полях From и To. Т.е если оны пусты новости не показываются, вроде как должны(функция view). Подскажите, что не так.



Офлайн

#2 Янв. 12, 2011 18:17:11

alexx11
От:
Зарегистрирован: 2010-05-13
Сообщения: 208
Репутация: +  0  -
Профиль   Отправить e-mail  

Сервер новостей

Круто, я как раз пару дней назад начал учить JS =), поэтому спасибо огромное что не стал мелочится и выложил все скрипты.

А почему не выводятся новости, действительно фиг, знает, должны =) Может быть json давится каким-то символом, который он не может раскодировать. Я бы посмотрел в чём хранятся данные в базе, и предварительно их обработал.



Офлайн

#3 Янв. 12, 2011 19:34:41

Soteric
От:
Зарегистрирован: 2010-09-19
Сообщения: 352
Репутация: +  20  -
Профиль   Отправить e-mail  

Сервер новостей

#!C:\Program Files\Python27\python.exe
Улыбнуло :)



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version