Bubalgum
Ноя. 14, 2017 10:16:21
Доброго времени суток!
Подскажите что не так.
Передаю из шаблона переменную методом jQuery.get(). Во view принимаю, в дебагере вижу, что пеедалось то что нужно, НО при сравнении условие не выполняется.
Например передаю my_var= “status”, проверяю во вьюхе условие if my_var == “status” результат false.
В дебагере смотрю переменные str, строковые, почему не равны?
FishHook
Ноя. 14, 2017 11:07:48
код покажите
Bubalgum
Ноя. 14, 2017 11:37:13
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)
index.html
{% 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>
Bubalgum
Ноя. 14, 2017 11:41:32
Протестировал, создал поле и текст выдергивал отправлял и цифры, код срабатывает.
Не срабатывает только из тех полей которые генерятся на основании данных из Бд. Бд sqllite. Кодировка везде utf8 и в Бд и в шаблоне.
FishHook
Ноя. 14, 2017 12:00:49
Bubalgum
Не срабатывает только из тех полей которые генерятся на основании данных из Бд.
В том коде, который вы показали, нет обращений к БД
Bubalgum
Ноя. 14, 2017 12:18:40
Самое начало view
latest_question_list = models._meta.fields
потом через context передается рендеру, а в шаблоне уже раскрывается эта переменная.
Если я не так выразился извиняюсь.
FishHook
Ноя. 14, 2017 12:30:24
Bubalgum
Вы думаете, что этим вы что-то получаете из БД? Это же просто список полей модели. И вообще, так делать нельзя, вам же специально подчеркнули - это служебный атрибут, не надо его использовать в прикладном коде.
У вас вообще что происходит? Вы пытаетесь с помощью jQuery отправить клиенту текст выбранного опшена (не value!!!), который должен представлять собой имя столбца таблицы БД? ЗАЧЕМ?
Bubalgum
Ноя. 14, 2017 12:36:02
Может я конечно зря так заморочился, если есть более простой способ с удовольствием выслушаю.
А задача следующая;
Открывается страница есть поле типа список, который заполняется на основании колонок БД. Затем в зависимости от того что выбрал пользователь запрашивается следующая инфа.
Например таблица с колонками имя и статус. т.е. первое поле будет со списком имя и статус. если выбрать имя, то пойдет запрос к БД и выгрузятся в следующее поле и сформируется список из имен, если юзер выберет статус, то запрос к Бд будет уже другой и выгрузиться поле со списком статусов.