Мы создали учётные записи клиентов. Теперь необходимо дать им возможность авторизоваться и получать доступ к сети Интернет. В этом нам помогут файлы views.py и urls.py. Файл views.py содержит функции представления, то есть выводит различные данные на экран. Файл urls.py содержит список соответствия url адресов функциям представления.
Файл urls.py содержит следующее:
#Импортируем модули
from django.conf.urls.defaults import patterns, include, url
from wifiproject.views import * #Импортируем функции представления
# Uncomment the next two lines to enable the admin:
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
# Examples:
('^$', hello), #URL, отвечающий за отображение главной страницы. То есть когда клиент введет адрес в браузере https://asp24.com.ua/ сработает этот url и выполнится функция представления hello
url(r'^auth_inet/$',auth_inet), #URL обрабатывает данные присланные пользователем через форму авторизации
# Uncomment the admin/doc line below to enable admin documentation:
url(r'^admin/doc/', include('django.contrib.admindocs.urls')),
# Uncomment the next line to enable the admin:
url(r'^admin/', include(admin.site.urls)),
)
Перейдём в файл views.py
#Подключаем модули
# -*- coding: utf-8 -*-
from wifizone.wifiproject.models import *
from django.http import HttpResponse
from django.template import loader, Context
from django.views.generic.simple import direct_to_template
from django.http import HttpResponseRedirect
#Функция представления hello очень проста. Всё что она делает, так это выводит на экран html-страницу index.html, в которой будет выводиться информация для клиентов и форма для авторизации
#Отображаем главную страницу
def hello(request):
return direct_to_template(request, 'index.html')
Рис.1. Главная страница
На рисунке 1 видна форма для ввода данных. В неё клиент должен ввести свой пароль, ip-адрес, полученный от устройства Mikrotik Routerboard, и mac-адрес своего беспроводного устройства.
<form action="/auth_inet/" method="POST" class="tabbody" enctype="multipart/form-data">{% csrf_token %}
action="/auth_inet/" – адрес куда будут отправлены, данные из формы.
method="POST" – метод с помощью которого, будут переданы данные.
{% csrf_token %} – защита от Cross-Site Request Forgery (межсайтовая подделка запроса)
В принципе, уже можно было приступить к написанию функции представления, обрабатывающей данные, введённые пользователем и авторизующие его на устройстве Mikrotik Routerboard, но тогда пришлось бы данные для подключения к устройству Mikrotik Routerboard описывать в коде программы. Это не очень удобно, так как если изменятся данные, придётся редактировать код. Лучше создадим модель, которая будет отвечать за добавление данных об устройствах Mikrotik Routerboard.
В файл models.py добавляем модель MikroTik:
class MikroTik(models.Model):
#Поле для хранения ip-адреса устройства Mikrotik Routerboard
ip_device = models.IPAddressField(verbose_name='ip адрес устройства')
#Поле для хранения информации о номере порта SSH службы
port_device = models.IntegerField(verbose_name='Номер порта SSH службы')
#Логин администратора в устройстве Mikrotik Routerboard
login_device = models.CharField(max_length=200, verbose_name='Логин администратора')
#Пароль администратора в устройстве Mikrotik Routerboard
password_device = models.CharField(max_length=200, verbose_name='Пароль администратора')
def __unicode__(self):
return '%s ' % (self.ip_device)
В файл admin.py добавим
class MikroTikAdmin(admin.ModelAdmin):
#Определяем список полей, которые будут отображаться
list_display = ('ip_device', 'port_device', 'login_device', 'password_device',)
#Подключаем модель к панели администратора
admin.site.register(MikroTik, MikroTikAdmin)
Рис.2. Таблица в базе данных
Создадим таблицу для модели в базе данных.
Рис.3. Модель MikroTik в разделе администратора
В результате, в панель администратора должен добавиться интерфейс для работы с моделью MikroTik.
Рис.4. Данные об устройстве Mikrotik Routerboard
Добавляем данные для подключения к устройству Mikrotik Routerboard.
Рис.5. Список устройств Mikrotik Routerboard
Таким образом очень просто изменять данные об устройстве Mikrotik Routerboard и добавление новых устройств.
Евгений Рудченко специально для asp24





