Найти - Пользователи
Полная версия: странности с переменными при передаче из шаблона во view
Начало » Django » странности с переменными при передаче из шаблона во view
1
Bubalgum
Доброго времени суток!
Подскажите что не так.
Передаю из шаблона переменную методом jQuery.get(). Во view принимаю, в дебагере вижу, что пеедалось то что нужно, НО при сравнении условие не выполняется.
Например передаю my_var= “status”, проверяю во вьюхе условие if my_var == “status” результат false.
В дебагере смотрю переменные str, строковые, почему не равны?
FishHook
код покажите
Bubalgum
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
Протестировал, создал поле и текст выдергивал отправлял и цифры, код срабатывает.
Не срабатывает только из тех полей которые генерятся на основании данных из Бд. Бд sqllite. Кодировка везде utf8 и в Бд и в шаблоне.
FishHook
Bubalgum
Не срабатывает только из тех полей которые генерятся на основании данных из Бд.
В том коде, который вы показали, нет обращений к БД
Bubalgum
Самое начало view
 latest_question_list = models._meta.fields
потом через context передается рендеру, а в шаблоне уже раскрывается эта переменная.
Если я не так выразился извиняюсь.
FishHook
Bubalgum
Вы думаете, что этим вы что-то получаете из БД? Это же просто список полей модели. И вообще, так делать нельзя, вам же специально подчеркнули - это служебный атрибут, не надо его использовать в прикладном коде.
У вас вообще что происходит? Вы пытаетесь с помощью jQuery отправить клиенту текст выбранного опшена (не value!!!), который должен представлять собой имя столбца таблицы БД? ЗАЧЕМ?
Bubalgum
Может я конечно зря так заморочился, если есть более простой способ с удовольствием выслушаю.
А задача следующая;
Открывается страница есть поле типа список, который заполняется на основании колонок БД. Затем в зависимости от того что выбрал пользователь запрашивается следующая инфа.
Например таблица с колонками имя и статус. т.е. первое поле будет со списком имя и статус. если выбрать имя, то пойдет запрос к БД и выгрузятся в следующее поле и сформируется список из имен, если юзер выберет статус, то запрос к Бд будет уже другой и выгрузиться поле со списком статусов.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB