Размещение просмотров, URL-адресов и HTML, чтобы быть понятным. Я печатаю результаты поиска в HTML-таблицах при отправке. Форма и результат отображаются на одной странице. Моя форма работает, как и ожидалось, только один раз. Если я пытаюсь использовать форму второй раз после печати результатов поиска по первым критериям поиска, она выдает ошибку: AttributeError 'NoneType' object has no attribute 'replace'.
И URL-адрес указывает на определениекоторый возвращает мне ответ (stream_response), например: localhost / stream_response . Чтобы заставить работать форму, мне нужно вручную обновить страницу, тогда форма работает, как и ожидалось (обратно к localhost / checkProject. HTML) . Кроме того, есть три выпадающих элемента, которые я печатаю из базы данных при начальной загрузке страницы. После одного поиска выпадающие значения тоже исчезают. Вы можете увидеть выпадающие списки в приведенном ниже html.
views.py
def stream_response(request):
data_list = [];
flag = 0;
if request.method == 'POST':
request.GET.get('Check')
flag = 0;
field = request.POST.get('inputValue')
projectName = request.POST['projectName'].strip()
communityPartner = request.POST.get('communityPartner').replace('-','')
campusPartner = request.POST['campusPartner'].replace('-','')
academicYear = request.POST['academicYear'].replace('---','')
print(sqlfiles.checkProjectsql(projectName,communityPartner,campusPartner,academicYear))
cursor = connection.cursor()
cursor.execute(sqlfiles.checkProjectsql(projectName,communityPartner,campusPartner,academicYear),params=None)
rows = cursor.fetchall()
if(rows != []):
print("why am i here")
for obj in rows:
if (projectName.strip().lower() in obj[0].split("(")[0].strip().lower()):
flag =2
if(projectName.strip().lower() == obj[0].split("(")[0].strip().lower()):
flag=1
data_list.append({"projectName": obj[0].split("(")[0], "communityPartner": obj[1], "campusPartner": obj[3],
"academicYear": obj[2], 'flagBit': flag })
return render(request, 'projects/checkProject.html', {'data_list': data_list, "projectName": projectName, 'flagBit': flag})
else:
data_list.append({"projectName": "", "communityPartner": "", "campusPartner": "",
"academicYear": "", 'flagBit': flag})
return render(request, 'projects/checkProject.html', {'data_list': data_list, "projectName": projectName, 'flagBit': flag})
checkProject.html
<form id="streamform" action="{% url 'stream_response' %}" method="POST">
{% csrf_token %}
<input type="text" name="projectName" id="projectName" class="form-control" value = "{{projectName}}" placeholder="Desired projectName" >
<div class="col-lg-4 col-md-5 form-group">
<label for="community_type"> Community Partner Types
{% for data_definition in data_definition %}
{% if data_definition.id == 33%}
{% endif %}
{% endfor %}
</label>
<select id="communityPartner" name="communityPartner" CompValue=" ">
{% for name in community_filter.form.community_partner %}
<option id = "{{name}}"> </option>
{% endfor %}
</select>
</div>
<div class="col-lg-4 col-md-5 form-group">
<label for="campus_partner"> Campus Partners
{% for data_definition in data_definition %}
{% if data_definition.id == 1%}
{% endif %}
{% endfor %}
</label>
<select id="campuspartner" name="campusPartner" CampValue=" ">
{% for campus in campus_filter.form.campus_partner %}
<option id = "{{campus}}"> </option>
{% endfor %}
</select>
</div>
<div class="col-lg-4 col-md-5 form-group">
<label for="academic_year"> From Academic Years
{% for data_definition in data_definition %}
{% if data_definition.id == 32%}
{% endif %}
{% endfor %}
</label>
<select id="academicYear" name="academicYear" YearValue=" ">
{% for sem in projects.form.academic_year %}
<option id = "{{sem}}"> </option>
{% endfor %}
</select>
</div>
<input class="btn btn btn-secondary btn-md" type="submit" value="search" id="streambutton"/>
</form>
checkProject.html (печать ответа)
<tbody>
{% for project in data_list %}
<tr id="tablerows">
<td>{{project.academicYear}}</td>
<td>{{project.projectName}}</td>
<td>{{ project.communityPartner }} </td>
<td>{{ project.campusPartner }}</td>
</tr>
{% endfor %}
</tbody>
urls.py
path('stream_response/', views.stream_response, name='stream_response'),