Форум сайта python.su
Доброго времени суток!
Подскажите что не так.
Передаю из шаблона переменную методом jQuery.get(). Во view принимаю, в дебагере вижу, что пеедалось то что нужно, НО при сравнении условие не выполняется.
Например передаю my_var= “status”, проверяю во вьюхе условие if my_var == “status” результат false.
В дебагере смотрю переменные str, строковые, почему не равны?
Офлайн
код покажите
Офлайн
view.py
def index_a(request): models = ClientPerson latest_question_list = models._meta.fields my_var = request.GET.get('persona_status', False) my_var4 = "person_name" if my_var4 == my_var: my_var5 ="yes" context ={'latest_question_list': latest_question_list} return render(request, 'blogic/index_a.html', context)
{% load staticfiles %} <!DOCTYPE html> <html lang="en" xmlns="http://www.w3.org/1999/xhtml"> <head> <meta charset="utf-8" /> <title></title> <script type="text/javascript" src="{% static 'blogic/js/jquery-3.2.1.min.js' %}"></script> <script type="text/javascript"> $(function() { $("#test").click(function() { q = $("#name_column option:selected").text(); q2 = { persona_status: q }; $.get("index_a/", q2, function (data) { $("#test3").append(' <select name="test">{% for product in my_var2 %}<option >{{ product }}</option>{% endfor %}</select>'); }); }); }); </script> <body> <p><a id="test">Hello</a></p> <p> <select id="name_column" name="test"> {% for product in latest_question_list %} <option >{{ product.column }} </option> {% endfor %} </select> </p> <select name="test2"> <option ></option> {% for product in my_var2 %} <option >{{ product }} </option> {% endfor %} </select> </body> </html>
Отредактировано FishHook (Ноя. 14, 2017 11:59:24)
Офлайн
Протестировал, создал поле и текст выдергивал отправлял и цифры, код срабатывает.
Не срабатывает только из тех полей которые генерятся на основании данных из Бд. Бд sqllite. Кодировка везде utf8 и в Бд и в шаблоне.
Отредактировано Bubalgum (Ноя. 14, 2017 11:46:08)
Офлайн
BubalgumВ том коде, который вы показали, нет обращений к БД
Не срабатывает только из тех полей которые генерятся на основании данных из Бд.
Офлайн
Самое начало view
latest_question_list = models._meta.fields
Отредактировано Bubalgum (Ноя. 14, 2017 12:19:14)
Офлайн
Bubalgum
Вы думаете, что этим вы что-то получаете из БД? Это же просто список полей модели. И вообще, так делать нельзя, вам же специально подчеркнули - это служебный атрибут, не надо его использовать в прикладном коде.
У вас вообще что происходит? Вы пытаетесь с помощью jQuery отправить клиенту текст выбранного опшена (не value!!!), который должен представлять собой имя столбца таблицы БД? ЗАЧЕМ?
Офлайн
Может я конечно зря так заморочился, если есть более простой способ с удовольствием выслушаю.
А задача следующая;
Открывается страница есть поле типа список, который заполняется на основании колонок БД. Затем в зависимости от того что выбрал пользователь запрашивается следующая инфа.
Например таблица с колонками имя и статус. т.е. первое поле будет со списком имя и статус. если выбрать имя, то пойдет запрос к БД и выгрузятся в следующее поле и сформируется список из имен, если юзер выберет статус, то запрос к Бд будет уже другой и выгрузиться поле со списком статусов.
Офлайн