html - Django image isn't uploaded by using javascript node from markup string -


i created django dynamic forms work on click, don't why image isn't uploaded.

i didn't have request.files , added that. added enctype="multipart/form-data" didn't too.

so template code:

{% load staticfiles %}     <link rel="stylesheet" type="text/css" href="{% static 'vote/style.css' %}" /> <fieldset id="fieldset">     <form method = 'post' action = '' enctype="multipart/form-data">{%csrf_token %}         <p>{{ votetypeform }}</p>         <div id="placeholder">          </div>         <p>             <button type="button" name="submit" onclick="add();">+</button>         </p>         <input type = 'submit' value="create"/>     </form> </fieldset> <script type='text/javascript'> {#    document.write(code);#}     var _counter = 0;     var template = document.createtextnode('');     function appendstringasnodes(element, html)     {         var frag = document.createdocumentfragment(),             tmp = document.createelement('body'), child;         tmp.innerhtml = html;         // append elements in loop documentfragment, browser         // not re-render document each node         while (child = tmp.firstchild) {             frag.appendchild(child);         }         element.appendchild(frag); // now, append elements @ once         frag = tmp = null;     }     function add() {         var code = '<div id="template">' +                 '<p>' +                     '<fieldset id="fieldsets">' +                         '<legend id="legends">candidate no ['+ string(_counter+1) +']</legend>' +                        ' <form method = "post" action = "" enctype="multipart/form-data">'+                               '<input type="hidden" name="csrfmiddlewaretoken" value="{{csrf_token }}" />' +                             '<p><label for="id_name">name:</label> <input id="id_name" maxlength="50" name="name" type="text" /></p>'+                             '<p><label for="id_image">image:</label> <input id="id_image" name="image" type="file"/></p>'+                         '</form>' +                    ' </fieldset>' +                 '</p>'             '</div>';         _counter++;         appendstringasnodes(document.getelementbyid("placeholder"),code);         document.getelementbyid("someinput").value = _counter;     } </script> 

this views.py code:

def voting(request,pk):     voting_num = votetype.objects.get(pk=pk).vote_set.count()     if voting_num >= 2:         voted1 = votetype.objects.get(pk=pk).vote_set.order_by('?').first()         voted2 = votetype.objects.get(pk=pk).vote_set.order_by('?')[2]         while voted1 == voted2:             voted2 = vote.objects.order_by('?')[2]         context = requestcontext(request, {             'voted1': voted1,             'voted2': voted2,             'voting_num': voting_num         })     else:         context = requestcontext(request, {             'voting_num': voting_num         })      return render(request, 'vote/voting.html', context) 

i write

print votetypeform.is_valid()         print voteform.is_valid()         = request.files.get('image')         print request.files         print 

the printed data is:

true false <multivaluedict: {}> none 

why isn't file uploaded?

i checked , added image upload code in html instead of putting in javascript code. when so, working perfectly, when try put in javascript 'code' variable , use in appendstringnodes, doesn't work. problem should in javascript. how can fix it?

as @schillingt answered in comments. problem in having in javascript code. after taking away. problem solved.

this code:

{% load staticfiles %}     <link rel="stylesheet" type="text/css" href="{% static 'vote/style.css' %}" /> <fieldset id="fieldset">     <form method = 'post' action = '' enctype="multipart/form-data">{%csrf_token %}         <p>{{ votetypeform }}</p>         <div id="placeholder"> {#        <p><label for="id_image">image:</label> <input id="id_image" name="image" type="file"/></p>#}         </div>         <p>             <button type="button" name="submit" onclick="add();">+</button>         </p>         <input type = 'submit' value="create"/>     </form> </fieldset> <script type='text/javascript'> {#    document.write(code);#}     var _counter = 0;     var template = document.createtextnode('');     function appendstringasnodes(element, html)     {         var frag = document.createdocumentfragment(),             tmp = document.createelement('body'), child;         tmp.innerhtml = html;         // append elements in loop documentfragment, browser         // not re-render document each node         while (child = tmp.firstchild) {             frag.appendchild(child);         }         element.appendchild(frag); // now, append elements @ once         frag = tmp = null;     }     function add() {         var code = '<div id="template">' +                 '<p>' +                     '<fieldset id="fieldsets">' +                         '<legend id="legends">candidate no ['+ string(_counter+1) +']</legend>' + {#                       ' <form method = "post" action = "" enctype="multipart/form-data">'+#}                               '<input type="hidden" name="csrfmiddlewaretoken" value="{{csrf_token }}" />' +                             '<p><label for="id_name">name:</label> <input id="id_name" maxlength="50" name="name" type="text" /></p>'+                             '<p><label for="id_image">image:</label> <input id="id_image" name="image" type="file"/></p>'+ {#                        '</form>' +#}                    ' </fieldset>' +                 '</p>'             '</div>';         _counter++;         appendstringasnodes(document.getelementbyid("placeholder"),code);         document.getelementbyid("someinput").value = _counter;     } </script> 

thx @schillingt


Comments

Popular posts from this blog

toolbar - How to add link to user registration inside toobar in admin joomla 3 custom component -

linux - disk space limitation when creating war file -