Форма не работает после подачи один раз питона Django - PullRequest
0 голосов
/ 09 ноября 2019

Размещение просмотров, 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'),
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...