无法将参数从模板传递到 Django 视图

Posted

技术标签:

【中文标题】无法将参数从模板传递到 Django 视图【英文标题】:Can't pass parameter from template to Django view 【发布时间】:2021-05-11 09:44:53 【问题描述】:

我将三个参数从我的 html 模板传递给 django view.py。但每当我点击提交时,它就会显示Page not found ,。我还是编程和 Django 的新手。有谁知道我该如何解决这个问题? 预期的结果是网页能够显示用户的所有输入。结果应显示在同一页面上,而不是显示在其他页面上。

我的模板

<!-- The Modal -->
<div id="myModal" class="modal">
  <!-- Modal content -->
  <div class="modal-content">
    <div class="modal-header">
      <span class="close">&times;</span>
      <h2>Alert Policies</h2>
    </div>
    <div class="modal-body">

        <p style="font-size:14px">Please select an event parameter as well as the condition type and value that apply.</p>

        <!-- parameter drop down -->
        <form action="send" method="post">
            <label for="Parameter"> <b style="font-size:13px" >  Event parameter to evaluate </b></label>
            <select name="Parameter" id="Parameter" style="width:340px; font-family: 'Quicksand', sans-serif;">
                <option disabled selected value>select a parameter</option>
                <option value="Subject">Subject</option>
                <option value="Text">Text</option>

            </select>
            <br><br>

            <label for="Condition">   <b style="font-size:13px" >  Type of condition </b></label>
            <select name="Condition" id="Condition" style="width:340px; margin-left:69px; font-family: 'Quicksand', sans-serif;">
                <option disabled selected value>select a condition</option>
                <option value="Equals">Equals</option>
                <option value="Contain">Contain</option>
                <option value="NotContain">Does not contain</option>

            </select>
            <br><br>

            <label for="valuetomatch"> <b style="font-size:13px" > Value to match</b></label>
            <input type="text" id="valuetomatch" name="valuetomatch" style="width:333px; margin-left:80px; font-family: 'Quicksand', sans-serif;">
            <br>
            <br>
<button class="button"><span>OK</span></button>

  </form>

        key

    </div>

我的视图.py

from django.shortcuts import render
from django.http import HttpResponse

def index(request):

    return render(request,'DemoApp/hi.html')



def send(request):
    a=str(request.POST["Parameter"])
    b=str(request.POST["Condition"])
    c=str(request.POST["valuetomatch"])

    haha = a+b+c
    return render(request,'DemoApp/hi.html','key':haha)


# Create your views here.


我的网址

from django.contrib import admin
from django.urls import path
from . import views

urlpatterns = [
    path('', views.index,name='home-page'),
    path('', views.send, name='test'),

]

【问题讨论】:

【参考方案1】:

您的表单有&lt;form action="send" method="post"&gt;,但您在/send 没有任何网址。因此,您可以像这样更改 urls.py 文件:

urlpatterns = [
    path('', views.index,name='home-page'),
    path('send/', views.send, name='test'),

]

你应该考虑在模板中使用命名的url(通过url template tag),像这样:

<form action="% url 'test' %" method="post">

【讨论】:

您好,感谢您的回复。它现在可以工作了!

以上是关于无法将参数从模板传递到 Django 视图的主要内容,如果未能解决你的问题,请参考以下文章

Django - 将变量从函数视图传递到 html 模板

Django - 将变量从基于类的视图传递到模板

django - 将参数从模板传递到 models.py 的函数

如何将数据值从视图传递到 Django 中的模板?

Django将Python对象从视图传递到模板中的Javascript脚本

Django同时将视图中的var传递给两个模板