При помощи моделей опишем данные, которые нам понадобятся для организации работы системы.
Редактируем файл models.py. Создаём две модели: для генератора пароля и создания учётной записи клиента.
Импортируем нужные модули:
# -*- coding: utf-8 -*-
from django.db import models
from django.db import connection
import random
#Модель извлечения данных о паролях, и генератор паролей
#Создаем модель Gen_passw
class Gen_passw(models.Model):
#Метод извлекающий данные о паролях
def get_passwords(self):
#Подключаемся к базе
cur = connection.cursor()
#Формируем SQL запрос
sql = ("SELECT gen_password FROM wifiproject_create_account")
#Выполняем запрос
cur.execute(sql)
#Полученные данные, присваиваем переменной list_passwords
list_passwords = cur.fetchall()
#Закрываем соединение с базой
cur.close()
#Возвращаем значение переменной list_passwords
return list_passwords
#Метод генерирующий пароль
def f_gen_passwd(self):
arr = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm',\
\
'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'A', 'B',\
\
'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q',\
\
'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0']
passw = []
for i in xrange(20):
passw.append(random.choice(arr))
return "".join(passw)
Для каждой модели создаётся таблица в базе данных abstract = True, этим мы укажем что для данной модели, таблицу создавать не нужно.
class Meta:
abstract = True
Добавляем модель, создающую учетные записи клиентов.
Назовём модель Create_account
class Create_account(models.Model):
#Создаем поле gen_password, тип которого CharField. Максимальное количество символов 200. verbose_name='Пароль для доступа' задаёт описание поля в панели администратора.
gen_password = models.CharField(max_length=200, verbose_name='Пароль для доступа')
#В поле email будем хранить email, клиента
email = models.EmailField()
#Поле end_time содержит дату отключения клиента.
end_time = models.DateField(verbose_name='Дата отключения')
#Каждая модель, содержит метод save, для сохранения данных в базе.
def save(self):
#Создаем экземпляр класса(модели) Gen_passw
gen = Gen_passw()
#Выполняем бесконечный цикл
while True:
#Присваиваем переменной new_password сгенерированный пароль.
new_password = gen.f_gen_passwd()
#Извлекаем из базы данных запись, в которой поле gen_password равен значению переменной new_password. Если условие выполнено, это означает что пароль уже существует и будет сгенерирован новый пароль. Если условие не выполняется, прерываем цикл.
if Create_account.objects.filter(gen_password=new_password):
pass
else:
break
#Присваиваем полю gen_password, значение сгенерированного пароля
self.gen_password = new_password
super(Create_account, self).save()
def __unicode__(self):
return '%s' % (self.email)
Создадим базу данных и таблицы.
Рис.1. Создние базы данных
При помощи phpmyadmin создадим базу данных с именем wifizone.
Подключаем наше приложение. Для этого необходимо в файле settings.py добавить строчку 'wifizone.wifiproject',
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
# Uncomment the next line to enable the admin:
'django.contrib.admin',
'wifizone.wifiproject',
# Uncomment the next line to enable admin documentation:
# 'django.contrib.admindocs',
)
Рис.2. Создание таблиц в базе данных
Переходим в директорию с проектом и выполняем команду python manage.py syncdb
В результате будут созданы таблицы для панели администратора и таблица для модели Create_account.
Рис.3. Данные об администраторе
После создания таблиц, будет предложено создать учётную запись администратора.
Евгений Рудченко специально для ASP24



