Форум сайта python.su
Здравствуйте. недавно начал программировать на питоне. Нужно написать сервер добавления/просмотра новостей. Вот что у меня получилось:
#!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))
$(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>');
});
});
}
<!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>
Офлайн
Круто, я как раз пару дней назад начал учить JS =), поэтому спасибо огромное что не стал мелочится и выложил все скрипты.
А почему не выводятся новости, действительно фиг, знает, должны =) Может быть json давится каким-то символом, который он не может раскодировать. Я бы посмотрел в чём хранятся данные в базе, и предварительно их обработал.
Офлайн
#!C:\Program Files\Python27\python.exe
Офлайн