2017-11-17 2 views
0

Haben Sie eine einfache Funktion innerhalb einer Klasse. Funktion ist wie folgt: -Django Forms - Warum gibt Button ein "positional Argument" an eine Python Funktion?

def addition(a,b): 
     return a+b 

der Benutzer möchte zwei in einem Django-Formular Numerische Werte eingeben, dann werden diese addieren und das Ergebnis zeigen. Innerhalb der HTML-Seite Code wie folgt: -

<form class="form" action="" method="post" name="NameForm" enctype=multipart/form-data> 
      <div class="control-group"> 

      <div class="controls"> 
      <label for="user_input_1">Enter Numeric Input - 1: </label> 
      {% csrf_token %} 
      <input id="user_input_1" name="user_input_1" value = "{{NameForm.user_input_1}}" type="text" placeholder="Enter Numeric Input - 1:" class="form-control input-xlarge search-query center-display" required="True"> 
      </div> 

<div class="controls"> 
<label for="user_input_1">Enter Numeric Input - 2: </label> 
<input id="user_input_2" name="user_input_2" value = "{{NameForm.user_input_1}}" type="text" placeholder="Enter Numeric Input - 2:" class="form-control input-xlarge search-query center-display" required="True"> 
</div><!-- controls --> 
</div><!-- control-group --> 

<div class="control-group form-actions"> 
<div class="controls"> 
<button class="btn btn-primary btn-sm" value="Gogogo!" >Submit</button> 
</div><!-- controls --> 
</div><!-- control-group --> 
</form> 

In meinem - views.py

sum_1 = obj.addition(numeric_1,numeric_2)# Simple Addition Function 

... 

▼ Lokale Vars Variable Wert Form

numeric_1 444.443,0

numeric_2 555553,0

obj

Anfrage

# Als i Eingang zwei numerische Werte (Schwimmer), numeric_1 = 444.443,0 und numeric_2 = 555.553,0, das ERROR Django i erhalten ist => „addition() nimmt 2 Stellungsargumente aber 3 wurden gegeben ".

Die Submit-Aktion wird als "Positionsargument" für meine einfache "Addition" -Funktion betrachtet.

Wie kann ich dies vermeiden - wie von meinem - views.py gesehen, ich beschwöre die Funktion "addition" und übergebe die Argumente - numeric_1 = 444443.0 und numeric_2 = 555553.0, ich möchte die FORM SUBMIT nicht übergeben AKTION auf die "Addition" -Funktion.

Mein views.py wie unten zu sehen: -

def calc_a(request): 

obj = calc_1() ## 
if request.method == 'POST': 
# create a form instance and populate it with data from the request: 

    form = NameForm(request.POST) ### NameForm is a Form in app_1/forms.py 
    #print("DHANK______Form Submitted with NUMBER")## ok... 
    #result_1 = str(form["user_input_1"].value()) ## keep this INPUT as STR - Not FLOAT 
    #result_2 = str(form["user_input_2"].value()) ## keep this INPUT as STR - Not FLOAT 
    print(" "*30) 
    #print("_NUMBER 1__SUBMITTED ___________",result_1) # terminal prints for stepping through code 
    print(" "*30) 
    #print("_NUMBER 2__SUBMITTED ___________",result_2) 
    print(" "*30) 
    #print("DHANK______Form Submitted with NUMBER_",form["user_input_1"].value()) ## ok... 
    # check whether it's valid: 
    if form.is_valid(): 
     #print("DHANK______Form Submitted is Valid_______") ### DHANK -- prints - if Form is Valid 
     numeric_1 = float(form["user_input_1"].value()) 
     numeric_2 = float(form["user_input_2"].value()) 

     print("DHANK___numeric_2_______",numeric_2) 
     print("DHANK___numeric_1________",numeric_1) 

     sum_1 = obj.addition(numeric_1,numeric_2) ### call the "addition" Function 
     print("sum_1____===",sum_1) 

return render(request, 'app_1/calc_a.html') # 

Antwort

0

meine sehr einfache Schlupf Dokumentieren - Die „Addition“ -Funktion muss die Positions STANDARD - Parameter „Selbst“, also durch den Zusatz "wie unten gelöst gesehen Selbst "auf die" Zusatz "-Funktion ..war nicht wirklich ein Django Formular Problem.

def addition(self,a,b): 
    return a+b 
Verwandte Themen