Django使用按钮和“找不到'parsepdf'的反向”来“发布”请求parsepdf'不是有效的视图函数或模式名称。“

2024-09-30 06:28:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我将“字典”数据传递给模板
模板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

如果我点击“解析”按钮,我想获取“一行数据(红色squre)”,并想转到另一个视图的函数来处理数据,例如

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配置

# 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),
]

因为我对web和django还不熟悉,所以我不知道该怎么做。 我得到了“找不到'parsepdf'的反向”parsepdf'不是有效的视图函数或模式名称。“错误,使用上述模板HTML代码 请引导我


Tags: 数据pathweburluuidrequesttablescript
2条回答

为了使用从模板HTML到Django视图的POST请求,我使用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"]

您正在模板中使用URL viewname作为parsepdf

{% url 'pdfparseapp:parsepdf' %}

但是没有在URLConf中设置任何,导致错误

因此,添加viewname:

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

对您正在reverse上执行的其他URL执行相同的操作;如果不确定,则将其添加到所有列表中

相关问题 更多 >

    热门问题