Как решить проблему с шаблоном Javascript, не возвращающим правильное значение в Django,?

#javascript #python #django

Вопрос:

Я создал некоторые значения с помощью различных операций в своих представлениях. Поскольку я использую USE_THOUSAND_SEPARATOR = True в проекте, я выполняю некоторые операции (в противном случае диаграммы не работают), когда я печатаю окончательное значение в терминале, значение отображается правильно.

Но в шаблоне он не принимает полное значение целого числа в javascript, он показывает неполное.

Например,

в терминале просмотра:

 print(t1credit) --> 2241825 (Correct)
 

в шаблоне:

 window.alert( ({{ t1credit }}) ) --> 2  (not correct)
 

Как я могу это решить?

views.py

 top_1_country = Customer.objects.values(
            'country__country_name'
        ).annotate(Count('country'),
                   Sum('credit_limit')).order_by('-country__count')[:1]
        t1country = ""
        t1count = 0
        t1credit = 0
        counter = 0
        for top in top_1_country:
            for q,w in top.items():
                if counter == 0:
                    t1country = w
                elif counter == 1:
                    t1count = w
                else:
                    t1credit = w
                counter  = 1
        sep = '.'
        t1credit = str(t1credit)
        t1credit = t1credit.split(sep, 1)[0]
        t1credit = t1credit.replace(',', '')
        t1credit = int(t1credit)
 

Комментарии:

1. Вы смотрели исходный код в браузере? Нажмите Ctrl U. Что же в window.alert( ({{ t1credit }}) ) итоге получается?

2. он показывает окно. предупреждение( (2,241,825) ) тогда почему оно отображается по-другому?

3. Вы должны сохранить его как строку — без использования int() — и вы должны использовать " " в JavaScript, чтобы сообщить JavaScript, что он должен рассматривать его как строку. window.alert( "{{ t1credit }}" ) Когда вы ставите без "" , вы получаете window.alert( (2,241,825) ) , который обрабатывается как три аргумента window.alert( 2, 241, 825 ) , потому , что используется в JavaScript в качестве разделителя для аргументов в функции — и добавление ( ) не может его изменить..

4. Я понимаю. Спасибо вам за ваш комментарий. Теперь я это понимаю. Я использовал x_1 = parseInt((String("{{ t3credit }}").replace(',', '')).replace('.', '')) , и это работает. Если вы хотите, вы можете отправить свой комментарий в качестве ответа.