Вступление В первых двух частях мы разобрали основы Web.Python. Но этого мало, чтобы создать хороший сайт. Поэтому следует запомнить ещё несколько параграфов.
Сессии Сессии - важный момент при создании системы управления сайтом. Фактически, это каркас системы пользователей, авторизации и регистрации. Простой пример использования сессий:
class count: def GET(self): session.count += 1 return str(session.count)
class reset: def GET(self): session.kill() return ""
if __name__ == "__main__": app.run()
Тут мы проводим операцию прибавления при помощи сессий. Объект с сессиями обрабатывается до загрузки скрипта. При помощи баз данных можно сохранять данные про сессии:
Код
create table sessions ( session_id char(128) UNIQUE NOT NULL, atime timestamp NOT NULL default current_timestamp, data text );
Собственно, требуется подключить базу данных для произведения этого действия:
Код
db = web.database(dbn='postgres', db='mydatabase', user='myname', pw='') store = web.session.DBStore(db, 'sessions') session = web.session.Session(app, store, initializer={'count': 0})
В web.config можно изменять настройки сессий. В общих чертах разобрались, теперь давайте сделаем авторизацию.
Авторизация Это не является полноценной системой и служит скорее для закрытия определённых частей сайта. В данном примере используется СУБД SQLite.
Код
import hashlib # Импортирует md5 библиотеку для шифровки import web # Подключение Web к Python
def POST(self): i = web.input() # Получаем введённые данные
authdb = sqlite3.connect('users.db') # Подключаем базу данных pwdhash = hashlib.md5(i.password).hexdigest() # Шифруем пароль check = authdb.execute('select * from users where username=? and password=?', (i.username, pwdhash)) # Ищем пользователя с таким логином и паролем if check: # Если есть такая пара... session.loggedin = True # Записываем в сессию, что пользователь авторизован session.username = i.username # Записываем в сессию имя пользователя raise web.seeother('/results') # Перебрасываем пользователя по адресу /results else: return render.base("Those login details don't work.") # Если пароль не совпадает, показываем ошибку
Простой блог Итак, давайте забабахаем что-то эдакое. По скольку во второй части вам был обещан блог, придётся выкручиваться. Структура файлов такова:
def GET(self): form = self.form() return render.new(form)
def POST(self): form = self.form() if not form.validates(): return render.new(form) model.new_post(form.d.title, form.d.content) raise web.seeother('/')
def GET(self, id): post = model.get_post(int(id)) form = New.form() form.fill(post) return render.edit(post, form)
def POST(self, id): form = New.form() post = model.get_post(int(id)) if not form.validates(): return render.edit(post, form) model.update_post(int(id), form.d.title, form.d.content) raise web.seeother('/')
app = web.application(urls, globals())
if __name__ == '__main__': app.run()
Кстати, для блога требуется таблица с подобной структурой:
Код
CREATE TABLE entries ( id INT AUTO_INCREMENT, title TEXT, content TEXT, posted_on DATETIME, primary key (id) );
Также если вы считаете, что данный материал мог быть интересен и полезен кому-то из ваших друзей, то вы бы могли посоветовать его, отправив сообщение на e-mail друга:
Игровые объявления и предложения:
Если вас заинтересовал материал «Создаем свой сайт/игру на Python. Часть 3», и вы бы хотели прочесть что-то на эту же тему, то вы можете воспользоваться списком схожих материалов ниже. Данный список сформирован автоматически по тематическим меткам раздела.
Предлагаются такие схожие материалы:
Если вы ведёте свой блог, микроблог, либо участвуете в какой-то популярной социальной сети, то вы можете быстро поделиться данной заметкой со своими друзьями и посетителями.
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи. [ Регистрация | Вход ]