vendredi 17 juin 2016

Optional Input Box In Django

I'm trying to develop optional input box,( if user will put some value, then no_cluster should be this value, if not, then the code after the else should compute the value and consider it).. but it's not getting the input from the user, it's always taking the default value. What I'm doing wrong?

view.py:

def number_cluster(request, data_size):
    if request.method == 'GET':
       img1 = Book(request.GET)
        if img1.is_valid():
            no_cluster = int(request.POST.get('num_clusters1'))
            return render(int(no_cluster), {'form': img1})
        else:
            no_cluster = data_size / 2.34
            return (int(no_cluster))

my whole file of view.py:

def home(request):
    if request.method=="POST":
        img = UploadForm(request.POST, request.FILES)
        no_clus = int(request.POST.get('num_clusters', 10))

        if img.is_valid():
            paramFile =io.TextIOWrapper(request.FILES['File'].file)
            portfolio1 = csv.DictReader(paramFile)
            users = []

            users = [row["BASE_NAME"] for row in portfolio1]


            my_list = users
            vectorizer = CountVectorizer()
            dtm = vectorizer.fit_transform(my_list)

            lsa = TruncatedSVD(n_components=100)
            dtm_lsa = lsa.fit_transform(dtm)
            dtm_lsa = Normalizer(copy=False).fit_transform(dtm_lsa)
            product= (np.dot(dtm_lsa, dtm_lsa.T))
            dist1 = (1 - product)

            no_cluster = number_cluster(request,len(my_list))
            print(no_cluster)
            for i in range(len(arr_3d)):
                # print (i+1910)

                km = AgglomerativeClustering(n_clusters=no_cluster, linkage='complete')
                km = km.fit(arr_3d[i])

                labels = km.labels_

            csvfile = settings.MEDIA_ROOT +'\'+ 'images\export.csv'

            csv_input = pd.read_csv(csvfile, encoding='latin-1')
            csv_input['cluster_ID'] = labels
            csv_input['BASE_NAME'] = my_list
            csv_input.to_csv(settings.MEDIA_ROOT +'/'+ 'output.csv', index=False)
            clus_groups = list()
            for j in range(no_cluster):
                # print(" cluster no %i:%s" % (j, [my_list[i] for i, x in enumerate(labels) if x == j]))
                list_of_ints = ([my_list[i] for i, x in enumerate(labels) if x == j])
                clus_groups.append('  '.join(list_of_ints))
            vectorizer = CountVectorizer()
            dtm = vectorizer.fit_transform(my_list)

            lsa = TruncatedSVD(n_components=100)
            dtm_lsa = lsa.fit_transform(dtm)
            dtm_lsa = Normalizer(copy=False).fit_transform(dtm_lsa)

            product= (np.dot(dtm_lsa, dtm_lsa.T))
            dist1 = (1 - product)
           # dist1 = (1 - np.asarray(temp_matrix * temp_matrix.T))
           # dist1 = (1 - np.asarray(numpy.asmatrix(dtm_lsa) * numpy.asmatrix(dtm_lsa).T))
           # similarity = np.asarray(numpy.asmatrix(dtm_lsa) * numpy.asmatrix(dtm_lsa).T)
            k = len(my_list)
          #  dist1 = 1 - similarity

            data2 = np.asarray(dist1)
            arr_3d = data2.reshape((1, k, k))
            # arr_3d= 1- arr_3d

            #no_clus = 5
           # no_clus=get_name(request)
            for i in range(len(arr_3d)):
                # print (i+1910)
                # km = AgglomerativeClustering(n_clusters=no_clus, linkage='ward').fit(arr_3d[i])
                # km = AgglomerativeClustering(n_clusters=no_clus, linkage='average').fit(arr_3d[i])

                km = KMeans(n_clusters=no_clus, init='k-means++')
                km = km.fit(arr_3d[i])
                # print km
                labels2 = km.labels_

                print(labels2)

            labels = labels.tolist()
            labels2 = labels2.tolist()

            csv_input = pd.read_csv(settings.MEDIA_ROOT +'/'+ 'output.csv',encoding='latin-1')
            labels1 = csv_input['cluster_ID']
            new_list = []
            for k in labels1:
                new_list.append(labels2[k])  # lookup the value in list2 at the index given by list1

            print(new_list)
            print(len(new_list))
            csv_input = pd.read_csv(settings.MEDIA_ROOT +'/'+ 'output.csv',encoding='latin-1')
            csv_input['cluster_ID'] = labels
            csv_input['BASE_NAME'] = my_list
            csv_input['User_Map'] = new_list
            csv_input.to_csv(settings.MEDIA_ROOT + '/' + 'output1.csv', index=False)

            send_file(request)

            return render(request, 'new.html', {'labels': labels})
    else:
        img=UploadForm()
    images=Upload.objects.all()
    return render(request,'new.html',{'form':img,'images':images})

Models:

    class Book(models.Model):
          description = models.TextField(blank=True)

New.html

 <h5> Optional : Please insert Number of Clusters</h5>
    <input type="number" name="num_clusters1" min="1" max="100000000"> 

Aucun commentaire:

Enregistrer un commentaire