2017-05-20 3 views
0

In der interaktiven Shell von Django zu betreten, ichAusgabe in einem Zustand Funktion

bekam
In [1]: contract = Contract.objects.get(pk=2) 

In [2]: contract 
Out[2]: <Contract: Contract with David Bouchard (en)> 

In [3]: contract.request.customer.convert_fax_number 
Out[3]: '' 

In einer JavaScript-Funktion, habe ich eine Variable var fax_number = "{{ contract.request.customer.convert_fax_number }}"; und erstellen Sie die folgende, wenn die Bedingung Funktion

if (fax_number == '') { 
     alert('Please, attach the fax number to your profile'); 
     return; 
    } 

Ich habe einen Haltepunkt der ersten Zeile dieses Codes gesetzt. Daher weiß ich, dass der Compiler in dieser Zeile angehalten hat, aber er hat die Anweisung dieser Bedingung nie ausgeführt. Hier

ist die ganze Funktion:

(function($){ 

    var bindEvents = function(node){ 
    $('.btn-fax', node).bind('click', function(e){ 
     e.preventDefault(); 
     var data = {}; 
     var fax_number = "{{ contract.request.customer.convert_fax_number }}"; 
     $.ajax({ 
     url : $(this).attr('href'), 
     type: 'POST', 
     data : data, 
     success: function(data, textStatus, jqXHR) { 
      if (data.success) { 
       if (data.redirect_to) { 
       window.location.href = data.redirect_to; 
       } 
       else if (data.reload) { 
       window.location.reload(); 
       } 
      } 
      else { 
      alert('Error! See console for details :('); 
      console.error(textStatus, data); 
      } 
     }, 
     error: function (jqXHR, textStatus, errorThrown) { 
      if (fax_number == '') { 
       alert('Please, attach the fax number to your profile'); 
       return; 
      } 
      console.error(textStatus, errorThrown); 
     } 
     }); 
     return false; 
    }); 
    }; 

und hier die Änderung Ich habe Unicode-String in einfachen String zu konvertieren:

@property 
def convert_fax_number(self): 
    fax = self.fax 
    return unicodedata.normalize('NFKD', fax).encode('ascii','ignore') 

Es ist nicht sogar die Ausgabe von convert_fax_number Arbeits ist ein einfaches leere Zeichenfolge ''. Wie könnte ich es reparieren?

Vielen Dank im Voraus!

+0

Diese Eigenschaft ist Unsinn, und es gibt keinen Grund, „Unicode-String in einfachem String zu konvertieren“. –

+0

Ich verstehe @DanielRoseman, aber selbst wenn ein Ersatz 'convert_fax_number' zu' fax' (Ausgang 'u'''),' alert (‚Bitte, die Faxnummer zu Ihrem Profil anhängen‘); 'nie aufgerufen. Ich kann das Problem nicht lösen. Ich brauche ein bisschen Hilfe hier. –

+0

Dann sollten Sie console.log() oder alert() verwenden, um herauszufinden, was der Wert tatsächlich ist. Warum überprüfen Sie das nur in der Ajax-Fehlerfunktion? –

Antwort

0

Zunächst erinnern triple zu verwenden ist gleich === wenn Strings zu vergleichen, um sicherzustellen, dass es seltsam asumptions ist nicht zu tun.

Können Sie eine console.log('whatever') in der Zeile auf der if Anweisung tun, nur um sicherzustellen, dass es die error Funktion ausführt? obwohl ich weiß, dass du gesagt hast:

I know that the compiler stopped on this line

Es ist besser, völlig sicher zu sein.

Dann sollten Sie versuchen, mit einem console.log(fax_number == '') und console.log(fax_number === '') zu sehen, was gerade unterhalb der Variablendeklaration passiert. Lass mich wissen, was du herausfindest.

0

Dieser Code wird nicht von Django gemacht - vermutlich ist es in einer separaten Datei JavaScript, um nicht in einer Django-Vorlage. Sie müssen den Wert von der eigentlichen Vorlage an Ihren JS übergeben.

+0

Kannst du klar erklären, wie ich das mit einem Beispiel machen könnte? Ich würde mich freuen. –