Уведомления

Группа в Telegram: @pythonsu

#1 Март 24, 2010 16:57:17

jingvar
От:
Зарегистрирован: 2010-03-24
Сообщения: 35
Репутация: +  0  -
Профиль   Отправить e-mail  

WEB интерфейс в качестве GUI

Вопрос несколько отличен от тематики фреймворков.

Моя текущая задача:
Есть некая база данных(mysql) нужно организовать кроссплатформенный доступ к ней приложению в возможностью визуального изменения параметров программы в том числе и ввод данных. Естественно еще и вывод результатов.

Прошу обратить внимание, что никакой модульности, возможности использовать различные веб движки не требуется. Супер авторизации, разграничения прав пользователей итд, красот, скинов, i18n, шаблонов итд итп.

Никаких жава аплетов и подобной ереси.

Все должно быть тупо и просто до безобразия.

Основные объекты на страничке, поле ввода, кнопка “Поехали”, чекбоксы, вывод таблицы.

SimpleHTTPServer, BaseHTTPServer позволят справиться?

Честно признаюсь тонкости веб программирования не знаю, был опыт с Plone - взрыв мозга.

В основном что мне требовалось раньше взял файлик, отпарсил данные, выходные данные в файлик.

Еще раз повторюсь нужен тупой ввод вывод данных через веб морду.



Офлайн

#2 Март 24, 2010 19:10:36

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

WEB интерфейс в качестве GUI

Офлайн

#3 Март 25, 2010 10:33:53

jingvar
От:
Зарегистрирован: 2010-03-24
Сообщения: 35
Репутация: +  0  -
Профиль   Отправить e-mail  

WEB интерфейс в качестве GUI

Спасибо, bottle похоже на то, что нужно. Постараюсь выложить свои изыскания на эту тему.



Офлайн

#4 Март 25, 2010 12:05:53

jingvar
От:
Зарегистрирован: 2010-03-24
Сообщения: 35
Репутация: +  0  -
Профиль   Отправить e-mail  

WEB интерфейс в качестве GUI

Итого:
Сайт - http://bottle.paws.de/
Требуется easy_install из пакета setuptools

Установка:
win32 лезем в “C:\Python26\Scripts> easy_install.exe bottle”
linux не смотря на то, что setuptools стоит нужен еще setuptools-devel

Саму страничку которую будем отдавать храним в отдельном HTML файле, т.к. в тексте программы не совсем удобно и думается верстка страничке удобней во внешнем WISWIG редакторе.

Не претендую на красоту кода, много чего можно написать короче.

 
# -*- coding: cp1251 -*-

import os,datetime
from bottle import request, response, run, route
#bottle.debug(True)
file_name = r"index.html"
f = open(file_name,'r')
page=''
for line in f.readlines(): page=page+line
f.close()
@route('/')
def main():
return page

@route('/', method='POST')
def main_post():
print request.POST
return 'DATA:' + str(request.POST) , request.POST['name'], str(page)

run(port=8080)
Собственно index.html
<form method="POST">
<input type="text" name="name"/>
<p>
<b>Каким браузером в основном пользуетесь:</b><Br>
<input type="radio" name="browser" value="ie"> Internet Explorer<Br>
<input type="radio" name="browser" value="opera"> Opera<Br>
<input type="radio" name="browser" value="firefox"> Firefox<Br>
</p>
<p>
<b>С какими операционными системамы вы знакомы?</b></p>
<p>
<input type="checkbox" name="item1" value="a1" checked>Windows 95/98<Br>
<input type="checkbox" name="item2" value="a2">Windows 2000<Br>
<input type="checkbox" name="item3" value="a3">System X<Br>
<input type="checkbox" name="item4" value="a4">Linux<Br>
<input type="checkbox" name="item5" value="a5">X3-DOS
</p>
<input type="submit"/>
</form>
Соответственно по адресу: http://127.0.0.1:8080/
Будет отдаваться страничка, поле ввода, группа радио, группа чекбоксов, кнопка отправить.

По нажатию кнопки отправить, вернутся переменные из запроса и оригинал страницы, т.е. в исходную страницу вставляем шаблон-идентификатор переменных основной программы и можем динамически отображать данные.

Данные из формы отдаются примерно так: {'item3': ‘a3’, ‘item1’: ‘a1’, ‘name’: ‘preved’, ‘browser’: ‘ie’} (в коде есть дублирующий принт в консоль)

Собрал из кусков чужих кодов где-то содранных на просторах.

Собственно теперь нужно еще с динамическим обновлением разобраться, но главное через ВЕБ морду можно решить задачу преднабора в поле ввода!!! Нету в винде модуля readline.



Офлайн

#5 Март 25, 2010 16:14:05

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

WEB интерфейс в качестве GUI

вот так лучше:

 
# -*- coding: utf-8 -*-

import os,datetime
from bottle import request, response, run, route

@route('/')
def main():
return open("index.html",'r').read()

@route('/', method='POST')
def main_post():
page = open("index.html",'r').read()
return page.replace('<!--param1-->','you choice %s <br/>' % request.POST['name'])

run(port=8080)
html:
<h2>Main page</h2>
<!--param1-->
<form method="POST">
<input type="text" name="name"/>
<p>
<b>Каким браузером в основном пользуетесь:</b><Br>
<input type="radio" name="browser" value="ie"> Internet Explorer<Br>
<input type="radio" name="browser" value="opera"> Opera<Br>
<input type="radio" name="browser" value="firefox"> Firefox<Br>
</p>
<p>
<b>С какими операционными системамы вы знакомы?</b></p>
<p>
<input type="checkbox" name="item1" value="a1" checked>Windows 95/98<Br>
<input type="checkbox" name="item2" value="a2">Windows 2000<Br>
<input type="checkbox" name="item3" value="a3">System X<Br>
<input type="checkbox" name="item4" value="a4">Linux<Br>
<input type="checkbox" name="item5" value="a5">X3-DOS
</p>
<input type="submit"/>
</form>
при посте идет подстановка параметра.

ЗЫ: старайся использовать всегда utf-8, генерируй страницу и подключайся к БД внутри ф-ии отдачи контента иначе не будет работать в многопоточном режиме.

Офлайн

#6 Март 25, 2010 16:49:01

jingvar
От:
Зарегистрирован: 2010-03-24
Сообщения: 35
Репутация: +  0  -
Профиль   Отправить e-mail  

WEB интерфейс в качестве GUI

o7412369815963
ЗЫ: старайся использовать всегда utf-8, генерируй страницу и подключайся к БД внутри ф-ии отдачи контента иначе не будет работать в многопоточном режиме.
Спасибо!

Риску поспорить.
1. Я работаю в netbeans, под виндой оно utf8 не хочет, в данном случае дешевле оставить свойства проекта “cp1251”, т.к. на # -*- coding: оно не реагирует. А еще учитывая, что под виндой 2кодировки…
2. Оригинальный файл я подгружаю 1 раз, в вашем варианте при каждом обновлении странички дисковые операции???
3. Про replace это очень хорошо, а то я уже собрался исходный файл разбирать собирать.
4. Вообще я уже рою в сторону шаблонов :) хотя в итоге при выводе не шаблон, а динамически изменяемая страница в мое проекте.



Офлайн

#7 Март 25, 2010 17:04:04

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

WEB интерфейс в качестве GUI

jingvar
Риску поспорить.
1. Я работаю в netbeans, под виндой оно utf8 не хочет, в данном случае дешевле оставить свойства проекта “cp1251”, т.к. на # -*- coding: оно не реагирует. А еще учитывая, что под виндой 2кодировки…
2. Оригинальный файл я подгружаю 1 раз, в вашем варианте при каждом обновлении странички дисковые операции???
3. Про replace это очень хорошо, а то я уже собрался исходный файл разбирать собирать.
4. Вообще я уже рою в сторону шаблонов :) хотя в итоге при выводе не шаблон, а динамически изменяемая страница в мое проекте.
1. работаю в Apatna, с utf8 все норм, приложения работают одинаково и под линуксом и под виндой + весь мир потихоньку переходит на utf-8
2. в предыдущем посте я написал что этот вариант с одним подгружанием не будет работать в многопоточном режиме (например wsgi), а про производительность вот заметка
3,4: я использую jinja2, она же и в Django по умолчанию только jinja1, вот заметку набросал

Офлайн

#8 Март 25, 2010 17:20:09

dimabest
От:
Зарегистрирован: 2009-02-12
Сообщения: 253
Репутация: +  0  -
Профиль   Отправить e-mail  

WEB интерфейс в качестве GUI

jingvar
1. Я работаю в netbeans, под виндой оно utf8 не хочет, в данном случае дешевле оставить свойства проекта “cp1251”, т.к. на # -*- coding: оно не реагирует.
Прекрасно хочет.

1. В ру-файлах первая строка # coding: utf-8
2. Правой кнопкой на проекте -> Properties. Внизу Encoding и выпадающий список. Выбираешь UTF-8. Все файлы твоего проекта перекодируются в UTF-8
3. Осталось выставить UTF-8 для Output-а, который по прежнему думает что данные приходят в cp1251. Открываем файл “C:\Program Files\NetBeans 6.7\etc\netbeans.conf”, только нормальной программой, которая понимает что “\n” - это перевод строки, например тем же NetBeans.
Находим строку netbeans_default_options=“много опций” и меняем ее на такую:

netbeans_default_options="-J-client -J-Xverify:none -J-Xss2m -J-Xms32m -J-XX:PermSize=32m -J-XX:MaxPermSize=200m -J-Dapple.laf.useScreenMenuBar=true -J-Dsun.java2d.noddraw=true -J-Dfile.encoding=UTF-8"


Про cp1251 и прочие однобайтовые кодировки пора забыть.



Офлайн

#9 Март 25, 2010 17:55:00

Александр Кошелев
От: Москва
Зарегистрирован: 2007-02-03
Сообщения: 1724
Репутация: +  2  -
Профиль   Отправить e-mail  

WEB интерфейс в качестве GUI

o7412369815963
она же и в Django по умолчанию только jinja1,
В Джанге никогда не было jinja.



Офлайн

#10 Март 25, 2010 19:56:44

regall
От: Киев
Зарегистрирован: 2008-07-17
Сообщения: 1583
Репутация: +  3  -
Профиль   Отправить e-mail  

WEB интерфейс в качестве GUI

Daevaorn
В Джанге никогда не было jinja.
+1, джаговский шаблонизатор действительно очень похож на jinja1, но это не он.



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version