обновление поля выбора формы django после каждого запроса

#python #django #django-views #django-forms

#python #django #django-представления #django-forms

Вопрос:

я создал веб-приложение. вот как это работает

  1. пользователь вводит число, сопоставленное с продуктом
  2. загружается csv-файл, соответствующий этому продукту
  3. вам будет представлена форма, которая содержит одно имя свойства вместе с вариантами, доступными для этого свойства

проблема, с которой я сталкиваюсь, заключается в том, что весь этот процесс работает для первого поиска только после этого всякий раз, когда пользователь вводит любое другое число для любого другого продукта, в идеале поле выбора в форме должно обновляться, но оно не обновляется,

я развернул это приложение на heroku, если я перезапущу все динамо-машины, это устранит проблему, но только на время. я имею в виду только для одного поиска, снова возникает та же проблема

ссылка на приложение: https://abcd4.herokuapp.com /

ссылка на код: https://drive.google.com/drive/folders/1zlKowvcpK5NOnmAZFstDPC1oWTH97WmX?usp=sharing

проблема не в развернутой платформе, т.е. heroku я столкнулся с такой же проблемой, когда запускал приложение на локальном хосте на локальном хосте, также перезапуск приложения решил проблему

 forms2.py

from django import forms
from django.core import validators

def mergefunction(s1,s2):
    merged = []
    for i in range(0, len(s1)):
        tup = (s1[i],s2[i])
        merged.append(tup)
    return merged

class GeeksForm(forms.Form): 
    import csv
    import pandas as pd
    filename =  r"downloaded1.csv"
    data = open(filename, encoding = "utf8")
    csv_data = csv.reader(data)
    data_lines = list(csv_data)
    total_row  = (len(data_lines))
    total_col = 0
    list1 = []
    list2 = []
    for i in data_lines[0]:
        if(total_col>=14):
            list1.append(i)
            list2.append(i)
        total_col = total_col   1
    df = pd.read_csv(filename)
    property_dic = {}

    for i in range(0,len(list1)):
        key = list1[i]
        saved_column = df[list1[i]]
        saved_column = set(saved_column)
        s1 = list(saved_column)
        s2 = list(saved_column)
        merged = mergefunction(s1,s2)
        value = merged
        value = tuple(value)
        property_dic[key] = value


    k = (len(list1))    

    i = 0
    if i < k:
        key1 = forms.ChoiceField(choices = property_dic[list1[i]] )
    i = i   1









view.py


def form_name_view(request):
    from . import forms2
    from .scrap2 import fun3

    if request.method == 'POST':
        form = forms2.GeeksForm(request.POST)
    
        if form.is_valid():
                print("VALID")
                lenoflist = fun3()
                lenoflist = 2
                i = 0
                listofdata = []
                if i < lenoflist:
                    data = form.cleaned_data['key1']
                    listofdata.append(data)
                i = i 1
            
                return finalfun(request,listofdata)

    else:
        form = forms2.GeeksForm()


    import csv
    import pandas as pd
    filename =  r"downloaded1.csv"
    data = open(filename, encoding = "utf8")
    csv_data = csv.reader(data)
    data_lines = list(csv_data)
    total_row  = (len(data_lines))
    total_col = 0
    list1 = []
    for i in data_lines[0]:
        if(total_col>=14):
            list1.append(i)
        total_col = total_col   1

    context = {
        'form' : form,
            "List" : list1[0],

    }
    return render(request,'firstapp/form_page2.html',context)
 

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

1. не ссылайтесь на код. Напишите это в вопросе.

2. я написал код в вопросе @paul

3. разбейте каждый фрагмент кода на метод, который выполняет что-то конкретное, а затем возвращает результат. Но в целом я предлагаю вам сделать еще несколько руководств по форме. Из этого кода трудно понять, в чем ваша проблема.

4. Я попытаюсь объяснить, что я хочу сделать, я создаю параметры поля выбора из столбца файла CSV, этот файл будет отличаться для разных продуктов, когда пользователь впервые посещает сайт, он получает параметры поля выбора, соответствующие правильному продукту, но при втором посещении и далее, даже если пользователь выбирает любой другой продуктотображаются параметры поля выбора предыдущего продукта.

5. напишите несколько тестов….