2 / 2 / 0
Регистрация: 20.01.2014
Сообщений: 87

Что к чему и просто интерфейс

06.04.2015, 22:01. Показов 2997. Ответов 44
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.
Помогите, пожалуйста, разобраться. У меня python 2.7.3, хотелось бы простенький интерфейс с одним комбинированным списком, радиокнопкой и двумя полями ввода.
Что нужно где скачать, куда установить, какой файлик куда запиахать и так далее.Искал по разным ссылкам, мануалам. Ничего не понял.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.04.2015, 22:01
Ответы с готовыми решениями:

У меня есть такой код,что необходимо чтобы сделать для него интерфейс и он запускался бы просто по нажатию кнопки?
#include <windows.h> #include <iostream> #include <conio.h> #include <stdio.h> #include <wingdi.h> using namespace...

К чему максимально просто написать чат-бота на Java?
Учитывая полное отсутствие опыта в вэб-технологиях. Логику работы бэкенда я сам организую, мне бы только работающую эхо-рыбу получить....

Нужно описание исходного кода скринсейвера, т.е. где что происходит, что чему и для чего присваивается и т.д
unit unitMain; interface uses Windows, Classes, Graphics, Forms, Registry; type TfrmMain = class(TForm) procedure...

44
2 / 2 / 0
Регистрация: 20.01.2014
Сообщений: 87
13.04.2015, 21:27  [ТС]
Студворк — интернет-сервис помощи студентам
Вобщем вот примерно такая форма в файле app/templates/index.html:
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
<form action="" method="post" name="login" onsubmit="return false">
    {{form.hidden_tag()}}
    <p>
        Please enter your OpenID, or select one of the providers below:<br>
        {{form.openid(size=80)}}
        {% for error in form.errors.openid %}
        <span style="color: red;">[{{error}}]</span>
        {% endfor %}<br>
    </p>
    <p>{{form.remember_me}} Remember Me</p>
    <p><input type="submit" value="Sign In" onclick="api()"></p>
</form>
Тут я в самой форме на кнопке использую onckick, а в action добавил onsubmit - для предотвращения перезагрузки страницы. Всё работает.
А во вьюхе у меня не получилось с:
jsonify
Но мне очень хочется освоить эту технику, если поможете разобраться...

Добавлено через 4 минуты
Только вот теперь как ловить ответ ajax от сервера - не придумал еще.
Можно сохранить наверно его в переменную, а потом вывести.. Что ли так...
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
13.04.2015, 22:09
sotik, подробности в студию, что не получилось? Давай ошибки, описание и т д

Цитата Сообщение от sotik Посмотреть сообщение
Только вот теперь как ловить ответ ajax от сервера - не придумал еще.
Ты говорил, что работал с ajax. Если ты работал, то знаешь как это делать. Вот как ты раньше это делал?
0
2 / 2 / 0
Регистрация: 20.01.2014
Сообщений: 87
13.04.2015, 22:39  [ТС]
index.html я уже привел
вот вьюха:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
from flask import render_template, flash, redirect, jsonify
from app import app
from forms import LoginForm
 
@app.route('/')
@app.route('/index')
def index():
    form = LoginForm()
    if form.validate_on_submit():
        flash('Login requested for OpenID="' + form.openid.data + '", remember_me=' + str(form.remember_me.data))
    return jsonify(api())
    return render_template('index.html',
        title = 'Home',
        form = form)
Ну и получаю ошибку:
NameError
NameError: global name 'api' is not defined
Traceback (most recent call last)
File "c:\microblog\flask\lib\site-packages\flask\app.py", line 1701, in __call__
return self.wsgi_app(environ, start_response)
File "c:\microblog\flask\lib\site-packages\flask\app.py", line 1689, in wsgi_app
response = self.make_response(self.handle_exception (e))
File "c:\microblog\flask\lib\site-packages\flask\app.py", line 1687, in wsgi_app
response = self.full_dispatch_request()
File "c:\microblog\flask\lib\site-packages\flask\app.py", line 1360, in full_dispatch_request
rv = self.handle_user_exception(e)
File "c:\microblog\flask\lib\site-packages\flask\app.py", line 1358, in full_dispatch_request
rv = self.dispatch_request()
File "c:\microblog\flask\lib\site-packages\flask\app.py", line 1344, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "c:\microblog\app\views.py", line 11, in index
return jsonify(api())
NameError: global name 'api' is not defined
The debugger caught an exception in your WSGI application. You can now look at the traceback which led to the error.
To switch between the interactive traceback and the plaintext one, you can click on the "Traceback" headline. From the text traceback you can also create a paste of it. For code execution mouse-over the frame you want to debug and click on the console icon on the right side.
You can execute arbitrary Python code in the stack frames and there are some extra helpers available for introspection:
• dump() shows all variables in the frame
• dump(obj) dumps all that's known about the object
Brought to you by DON'T PANIC, your friendly Werkzeug powered traceback interpreter.

Добавлено через 17 минут
Ты говорил, что работал с ajax. Если ты работал, то знаешь как это делать. Вот как ты раньше это делал?
***
Конечно, поэтому сделал вот так:
$('#result').html('opa');
А в index.html добавил контейнер <div>
Всё работает.
Но вот ту технику, о которой я писал - еще не постиг.
Если поможете разобраться, буду весьма признателен.
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
14.04.2015, 06:02
sotik, оформи код сначала тегами, потом будет говорить уже. Я предупреждал.

Добавлено через 7 часов 18 минут
Воспользуйся переводчиком или сам прочти вот это:
Цитата Сообщение от sotik Посмотреть сообщение
NameError: global name 'api' is not defined
Кстати посмотри на код, его правильно модератор отформатировал?
Если да, то это п..ц.

Есть ещё замечания, но они позже, ща время нет.
0
2 / 2 / 0
Регистрация: 20.01.2014
Сообщений: 87
14.04.2015, 07:48  [ТС]
В общем смотрю тут одни увещевания.
Я прошу мне помочь разобраться, но не понимаю зачем меня надо тыкать в каждую букву.
Спасибо братан за всё, но у меня тоже нет времени разбираться с этим на уровне "профи".
Это спортивный интерес, дабы сваять то что нужно и оставить.
Удачи.
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
14.04.2015, 15:24
Цитата Сообщение от sotik Посмотреть сообщение
зачем меня надо тыкать в каждую букву.
Тебя тыкают прямо в причину ошибки. Тебе интерпретатор пишет, что он не знает ни какого объекта api. Ты его не объявлял и пытаешься, что-то с ним делать. В этом ошибка + не могут стоят подрят два return (ну точнее могут согласно синтаксису, просто второй никогда не исполнится и его нужно удалить).
0
2 / 2 / 0
Регистрация: 20.01.2014
Сообщений: 87
14.04.2015, 15:40  [ТС]
Ну так как его объявить этот объект?
Ни в руководстве на хабре, ни по приведенным ссылкам на другие источники я не нашел ответа, как это правильно делать.
***
Другой момент - не работает у меня ajax ни методом post, ни методом get
JavaScript
1
2
3
4
5
6
7
8
9
10
11
    function api() {
$.ajax({
type: "GET",
url: "/translate",
data: "data=3",
success: function(msg){
    alert('ok');
    $('#result').html(msg);
}
});
    }
В файле: app/translate.py
находится единственная строка:
print "oha"
И я не знаю почему. Аналогичный код в апаче у меня пашет за здрасте.
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
14.04.2015, 15:57
Цитата Сообщение от sotik Посмотреть сообщение
Ну так как его объявить этот объект?
Поржал от души. Возможно в будущем поймёшь меня.
В общем, тебе нужно привести функцию примерно к такому виду, чтобы ошибки не было:
Python
1
2
3
4
5
6
7
@app.route('/')
@app.route('/index')
def index():
    form = LoginForm()
    if form.validate_on_submit():
        flash('Login requested for OpenID="' + form.openid.data + '", remember_me=' + str(form.remember_me.data))
    return jsonify(status='ok')
Цитата Сообщение от sotik Посмотреть сообщение
Другой момент - не работает у меня ajax ни методом post, ни методом get
Ну так, если на ajax должна отзываться вьюха, которая у тебя тут описана, то это у тебя не ajax не срабатывает, а ты запрос не туда шлёшь.

Цитата Сообщение от sotik Посмотреть сообщение
не работает у меня ajax
Я делал ajax примерно так:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
function set_program(program) {
var send_data = new FormData();
send_data.append('program', program);
 
$.ajax({
        type: 'POST',
        url: '/set/',
        data: send_data,
        processData: false,
        contentType: false,
        dataType: 'json',
        success: function(data) {
            if (data.status == 'ok') {
                alert('Текущая программа выбрана');
                $('h4#current_program').html(data.program_name);
            } else {
                alert('Произошла ошибка при обработке данных')
            }
        },
        error: function(data) {
            alert('Произошла непредвиденная ошибка при отправке данных')
        }
    })
}
0
2 / 2 / 0
Регистрация: 20.01.2014
Сообщений: 87
14.04.2015, 16:06  [ТС]
На ajax должна отзываться не вьюха, а файл translate.py
Причем этот файл у меня однажды даже умудрился скомпилироваться,а сейчас не хочет.
Если бы я над учениками по гитаре тоже поржал от души, то они вряд ли ко мне уже пришли.
Поэтому я смешного здесь ничего не вижу.
Скажи мне как будет выглядеть двойная доминанта в ми миноре с повышеной примой и пониженой квинтой - и я тоже возможно поржу от души.
Поэтому я здесь на форуме и спрашиваю, и учусь.
И надеюсь ты меня тоже когда-нибудь поймешь.
А я тебя сейчас понимаю едва ли.
Потому что форма у меня все равно выводится, приведенным мною методом,а те кренделя, которые ты мне описываешь я даже не понимаю зачем нужны.
Так что можешь опять поржать.
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
14.04.2015, 16:48
Цитата Сообщение от sotik Посмотреть сообщение
На ajax должна отзываться не вьюха, а файл translate.py
Ну при таком уровне запущенности я умываю руки, потому как такое ощущение, что учебник на habre ты не читал вообще.

Цитата Сообщение от sotik Посмотреть сообщение
На ajax должна отзываться не вьюха, а файл translate.py
На последок скажу, что на все запросы вызываются всегда вьюхи и ни какие translate.py не будут и не должны вызываться при поступлении запроса.
1
2 / 2 / 0
Регистрация: 20.01.2014
Сообщений: 87
15.04.2015, 08:39  [ТС]
1. на хабре я читал почти всё.
2. Ты говоришь об объектах, я у тебя спрашиваю как в этом случае создать объект.
Ты приводишь код, среди которого:
* * return jsonify(status='ok')
Надо понимать, переменная status принимает какое-тозначени.
Что я тут должен понять и как эту переменную вывести, если оно так?
3. Ты привел функцию ajax немногим отличающуюся от моей. Единственное - ты сразу берешь данные из формы. Этот трюк я возьму себе на заметку.
4. То что ajax делает опрос вьюхи - понятно. А вот зачем линк тогда там присутствует ("/translate") я не понимаю.
5. То что я чего-то не понимаю - это не моя вина, а тех кто не умеет объяснять, потому что те кто так объясняет абсолютно уверены, что программировать все должны уже уметь с самых пеленок.
Ладно, прошу прощения за беспокойство.
Походим по инету, может разберусь.
Всего доброго.

Добавлено через 15 часов 14 минут
Ключевой фразой стала:
"На последок скажу, что на все запросы вызываются всегда вьюхи..."
***
Вот тут-то я и стал понимать, что ajax по ссылке обращается во вьюхе вот сюда:
1 вариант:
Python
1
2
3
4
@app.route('/translate', methods = ['POST'])
@login_required
def translate():
...
Но у меня 1 вариант дает сбой сервера, а2 вариант работает:
2 вариант:
Python
1
2
3
@app.route('/login', methods = ['GET', 'POST'])
def login():
    return jsonify(result = api())
Соответственно link в ajax выглядит как: "/login"
Вообще-то у меня ответ от сервера приходит уже отформатированный, зачем его в json оборачивать пока не понятно...
Но тем не менее ответ я обрабатываю вот так:
JavaScript
1
2
    var data = JSON.parse(msg);
    $('#result').html(data.result);
Если можно как-то упростить, то было бы не плохо, а так всё работает, ключевые моменты ясны.
Цель этого поста - пробить броню для тех кто в танке
Благодарю за внимание.
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
15.04.2015, 11:56
Цитата Сообщение от sotik Посмотреть сообщение
Но тем не менее ответ я обрабатываю вот так:
Так обрабатывать пересланные данные ни к чему. Тебе и так приходят данные в json (return jsonify(result = api()) возвращает как раз json, почитай доку), по этому просто обращаешься к пришедшему объекту как к объекту json:
JavaScript
1
2
3
success: function(msg) {
    $('#result').html(msg.result);
}
0
2 / 2 / 0
Регистрация: 20.01.2014
Сообщений: 87
15.04.2015, 12:11  [ТС]
Вот и я пробовал обратиться к объекту json:.
именно таким способом, но у ничего не вышло.
В итоге убрал переменную result, так проще обрабатывать.
Python
1
2
3
@app.route('/login', methods = ['GET', 'POST'])
def login():
    return jsonify(api())
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
15.04.2015, 12:23
Цитата Сообщение от sotik Посмотреть сообщение
В итоге убрал переменную result, так проще обрабатывать.
Если функция api возврщает данные в json, то добавлять ещё 1 уровень вложенности действительно ни к чему.

Если бы ты выложил весь используемый код, то все было-бы норм. А так есть отрывок в котором вызывается какая-то функция api, а что она делает мы не знаем.
0
2 / 2 / 0
Регистрация: 20.01.2014
Сообщений: 87
15.04.2015, 13:16  [ТС]
Да чё там код этот.....
Вот строка, которую получает ajax в ответе:
{"return": {"funds": {"ppc": 0, "usd": 4.26e-06, "gbp": 0, "xpm": 0, "trc": 0, "ltc": 0, "ftc": 0, "nvc": 0, "nmc": 0, "btc": 0, "rur": 19292.63187615, "cnh": 2.9e-07, "eur": 0.23229289}, "open_orders": 3, "server_time": 1429092761, "transaction_count": 0, "rights": {"info": 1, "withdraw": 0, "trade": 1}}, "success": 1}
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
success: function(msg){
var out = "";
eur = msg.return.funds.eur;
usd = msg.return.funds.usd;
rur = msg.return.funds.rur;
btc = msg.return.funds.btc;
cnh = msg.return.funds.cnh;
open_orders = msg.return.open_orders;
out += "eur:" + eur + "<br>rur:" + rur + "<br>usd: " + usd + "<br>btc: " + btc + "<br>cnh:" + cnh + "<br>open_orders: " + open_orders;
    $('#result').html(out);
    alert('ok');
}
ну и не хочет js обрабатывать эту строку без var data = JSON.parse(msg);
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
15.04.2015, 14:28
Цитата Сообщение от sotik Посмотреть сообщение
Да чё там код этот.....
Да то, что нужно знать что возвращает функция и в каком формате, чтобы знать как работать с этими данными.
0
2 / 2 / 0
Регистрация: 20.01.2014
Сообщений: 87
15.04.2015, 22:04  [ТС]
Функция возвращает данные вот так:
Python
1
2
3
  response = conn.getresponse()
  data = json.load(response)
  return data
Добавлено через 2 часа 2 минуты
В функцции, где ajax вставляю твой код и чуть-чуть моего:
JavaScript
1
2
3
4
5
op = $('#openid').val(); // считываю значение из поля, цифра 3 например
var send_data = new FormData();
send_data.append('program', op);
...
data: send_data, // это в самом ajax передаю данные
Во вьюхе пробую принять эти данные и отправить серверу:
Python
1
2
3
@app.route('/login', methods = ['GET', 'POST'])
def login():
    return jsonify(api(request.send_data['program']))
Не работает. Что не так?
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
15.04.2015, 22:48
Цитата Сообщение от sotik Посмотреть сообщение
request.send_data['program']
эээм, это ты откуда взял, что у request есть атрибут send_data?
0
2 / 2 / 0
Регистрация: 20.01.2014
Сообщений: 87
15.04.2015, 23:29  [ТС]
Вобщем я не понимаю как это сделать.
атрибут не атрибут....
Не пашет оно
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
16.04.2015, 06:19
Python
1
request.form.get('program', '')
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.04.2015, 06:19
Помогаю со студенческими работами здесь

Объясните подробно данный код программы. Знаю что это фильтр а пошагово что к чему не понимаю
void __fastcall TForm1::suiButton7Click(TObject *Sender) { tdiag -&gt; Filtered = false; tdiag -&gt; Filt = «id_p=« + suiEdit6 -&gt; Text; ...

Как сделать Рамку для фотки , но не просто , а что бы можно было под рамкой написать что то )
Подскажите пж))

Что к чему?
В чем ошибка? program example1; var x, y, z, w: real; begin x := 149.9; y := 0.1174; z := 0.43; w :=...

Интерфейс с иерархией. Что идет в заголовок, а что в cpp
Добрый день, Допустим есть следующая иерархия: struct IBasicInterface { virtual ~IBasicInterface() {} virtual void...

Обьясните что к чему?
Факт в том что сайт пока не двигаю.. только наполняю каталог... как это обьяснить почему упала стоимость ссылки? - это же...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Опции темы

Новые блоги и статьи
попытка написать игровой сервер на C++
pyirrlicht 29.04.2026
попытка написать игровой сервер на плюсах с открытым бесконечным миром. возможно получится прикрутить интерпретатор питон для кастомизации игровой логики. что есть на текущий момент:. . .
Контроль уникальности выбранного документа-основания при изменении реквизита
Maks 28.04.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРемонтСпецтехники", разработанного в КА2. Задача: уведомлять пользователя, если указанная заявка (документ-основание). . .
Благородство как наказание
Maks 24.04.2026
У хорошего человека отношения с женщинами всегда складываются трудно. А я человек хороший. Заявляю без тени смущения, потому что гордиться тут нечем. От хорошего человека ждут соответствующего. . .
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2. Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru