#python #django #django-views #django-forms
#python #django #django-представления #django-forms
Вопрос:
я создал веб-приложение. вот как это работает
- пользователь вводит число, сопоставленное с продуктом
- загружается csv-файл, соответствующий этому продукту
- вам будет представлена форма, которая содержит одно имя свойства вместе с вариантами, доступными для этого свойства
проблема, с которой я сталкиваюсь, заключается в том, что весь этот процесс работает для первого поиска только после этого всякий раз, когда пользователь вводит любое другое число для любого другого продукта, в идеале поле выбора в форме должно обновляться, но оно не обновляется,
я развернул это приложение на 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. напишите несколько тестов….