Форум программистов, компьютерный форум, киберфорум
Python: Web
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.92/13: Рейтинг темы: голосов - 13, средняя оценка - 4.92
2 / 2 / 0
Регистрация: 20.01.2014
Сообщений: 87

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

06.04.2015, 22:01. Показов 2928. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru