Django "POST" запрос с использованием кнопки и "Обратный для 'parsepdf' не найден. 'Parsepdf' не является допустимой функцией представления или именем шаблона."ошибка - PullRequest
0 голосов
/ 10 ноября 2019

Я передаю данные "словаря" в шаблон
И HTML-код шаблона выглядит следующим образом

<h1>PDF paths</h1>

<!DOCTYPE html>
<html lang="en">
<head>
  <title>PDF paths</title>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
  <script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
</head>
<body>
<div class="container">
    <table class="table table-striped">
        <thead>
        <tr>
            <td><B>id</B></td>
            <td><B>uuid</B></td>
            <td><B>user_web_uuid</B></td>
            <td><B>inspectionUploadType</B></td>
            <td><B>uploadRoute</B></td>
            <td><B>createdAt</B></td>
            <td><B>status</B></td>
            <td><B></B></td>
        </tr>
        </thead>
        <tbody>
        {% for one_row in out_list %}
        <tr>
            <form action="{% url 'pdfparseapp:parsepdf' %}" method="POST" class="post-form"> {% csrf_token %}
                <td>{{one_row.0}}</td>
                <td>{{one_row.1}}</td>
                <td>{{one_row.2}}</td>
                <td>{{one_row.3}}</td>
                <td>{{one_row.4}}</td>
                <td>{{one_row.5}}</td>
                <td>{{one_row.6}}</td>
                <td><button type="submit" class="save btn btn-default">Parse</button></td>
            </form>
        </tr>
        {% endfor %}
        <tbody>
    </table>
</body>

Экран вывода выглядит следующим образом
enter image description here

И если я нажму кнопку «Разобрать», я хочу получить «данные одной строки (красный квадрат)» и перейти к функции другого представления для обработки данных, например,

def process_data(request):
  id=request.POST["id"]
  uuid=request.POST["uuid"]
  user_web_uuid=request.POST["user_web_uuid"]
  inspectionUploadType=request.POST["inspectionUploadType"]
  uploadRoute=request.POST["uploadRoute"]
  createdAt=request.POST["createdAt"]
  status=request.POST["status"]

  # Perform algorithm code using above data.......

URL-адрес проекта и URL-адрес приложения conf

# Project URL conf
urlpatterns = [
    path('admin/', admin.site.urls),
    path('api/', include('pdfparseapp.urls'))
]

# App URL conf
app_name="pdfparseapp"
urlpatterns = [
    path('uploadpdfs/', views.pdfView),
    path('parsepdf/', views.parsePdf),
]

Поскольку я новичок в Интернете и django, я не уверен, как это сделать. И я получил «Обратный для parsepdf» не найден. «Parsepdf» не является допустимой функцией представления или именем шаблона ». ошибка, с приведенным выше шаблоном HTML-кода.

Ответы [ 2 ]

1 голос
/ 10 ноября 2019

Вы используете имя просмотра URL как parsepdf внутри шаблона:

{% url 'pdfparseapp:parsepdf' %}

, но не указали ни одного в URLConf, что приводит к ошибке.

Итак, добавьтеимя просмотра:

urlpatterns = [
    path('parsepdf/', views.parsePdf, name='parsepdf'),
]

Сделайте то же самое для других URL, которые вы используете reverse;если не уверены, добавьте их все.

0 голосов
/ 10 ноября 2019

Чтобы использовать запрос POST из шаблона HTML для представления Django, я попробовал этот код, используя hidden input tag

<h1>PDF paths</h1>

<!DOCTYPE html>
<html lang="en">
<head>
  <title>PDF paths</title>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
  <script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
</head>
<body>
<div class="container">
    <table class="table table-striped">
        <thead>
        <tr>
            <td><B>id</B></td>
            <td><B>uuid</B></td>
            <td><B>user_web_uuid</B></td>
            <td><B>inspectionUploadType</B></td>
            <td><B>uploadRoute</B></td>
            <td><B>createdAt</B></td>
            <td><B>status</B></td>
            <td><B></B></td>
        </tr>
        </thead>
        <tbody>
        {% for one_row in out_list %}
        <tr>
            <form action="{% url 'pdfparseapp:parsepdf' %}" method="POST" class="post-form"> {% csrf_token %}
                <td>{{one_row.0}}</td>
                <input type="hidden" name="id" value="{{one_row.0}}">
                <td>{{one_row.1}}</td>
                <input type="hidden" name="uuid" value="{{one_row.1}}">
                <td>{{one_row.2}}</td>
                <input type="hidden" name="user_web_uuid" value="{{one_row.2}}">
                <td>{{one_row.3}}</td>
                <input type="hidden" name="inspectionUploadType" value="{{one_row.3}}">
                <td>{{one_row.4}}</td>
                <input type="hidden" name="uploadRoute" value="{{one_row.4}}">
                <td>{{one_row.5}}</td>
                <input type="hidden" name="createdAt" value="{{one_row.5}}">
                <td>{{one_row.6}}</td>
                <input type="hidden" name="status" value="{{one_row.6}}">
                <td><button type="submit" class="save btn btn-default">Parse</button></td>
            </form>
        </tr>
        {% endfor %}
        <tbody>
    </table>
</body>

И представление, которое принимает запрос POST выше, выглядит так:

def parsePdf(request):
  id_val=request.POST["id"]
  uuid_val=request.POST["uuid"]
  user_web_uuid_val=request.POST["user_web_uuid"]
  inspectionUploadType_val=request.POST["inspectionUploadType"]
  uploadRoute_val=request.POST["uploadRoute"]
  createdAt_val=request.POST["createdAt"]
  status_val=request.POST["status"]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...