Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在Django,如何知道按下了哪个按钮?_Python_Html_Django - Fatal编程技术网

Python 在Django,如何知道按下了哪个按钮?

Python 在Django,如何知道按下了哪个按钮?,python,html,django,Python,Html,Django,这是我的html,我有两个按钮,一个用于接受请求,另一个用于拒绝请求。在我看来,我需要知道申请人的电子邮件(tutor\u application.tutor.chalkslateuser.email)中按下了哪个按钮。我尝试了许多解决办法,但都没有用 {% for tutor_application in tutor_application_list %} <div class="card" style="width: 15rem;"> <img sr

这是我的html,我有两个按钮,一个用于接受请求,另一个用于拒绝请求。在我看来,我需要知道申请人的电子邮件(tutor\u application.tutor.chalkslateuser.email)中按下了哪个按钮。我尝试了许多解决办法,但都没有用


{% for tutor_application in tutor_application_list %}

    <div class="card" style="width: 15rem;">
      <img src="{{ tutor_application.tutor.picture.url }}" class="card-img-top" >
      <div class="card-body">
        <h5 class="card-title">
            {{ tutor_application.tutor.chalkslate_user.first_name }} {{ tutor_application.tutor.chalkslate_user.last_name }}
        </h5>
        <h6 class="card-subtitle mb-2 text-muted">{{ tutor_application.note }}</h6>
        <h6 class="card-subtitle mb-2 text-muted">{{ tutor_application.posted }}</h6>
      </div>
      <a class="btn btn-outline-success" role="button" type="submit"> Accept </a>
      <a class="btn btn-outline-danger" href="#" role="button"> Reject </a>
    </div>

{% endfor %}


{tutor_application_list%中tutor_application的百分比}
{{tutor_application.tutor.chalkslate_user.first_name}{{{tutor_application.tutor.chalkslate_user.last_name}
{{tutor_application.note}
{{tutor_application.posted}}
{%endfor%}

一定要使用Django表单框架!绝对,绝对,做

但是,没有理由不为一个Django表单/页面设置两个提交按钮。它们有一个名称和一个值。比如说

<input type="submit name="update" value="Update" 
     class="btn btn-primary" id="submit-id-update" />

<input type="submit" name="done" value="Done" 
     class="btn btn-primary" id="submit-id-done" />
信息 让我们来分割层,以避免这样的混乱。有两层,客户端服务器端

服务器端 Django在服务器端工作,他从您发送到页面的变量和所有其他内容中获取数据,因此通常他将挂载一个HTML页面,并将其返回给您的客户机(在这种情况下,您可以)

客户端 这是django(或任何其他服务器或框架)返回的页面,该页面运行在客户端浏览器(不在服务器中)上,称为DOM,django无法对其进行操作,因为它已呈现,要执行此操作,您需要使用Javascript,以便可以与页面中的元素进行交互,激发事件并查看客户端是否有任何数据被更改,在客户端使用Javascript的一个简单方法是使用Jquery,因为有一个库更友好吗

这是您的代码,稍有改动,我为您的两个链接添加了名称和id,名为than Btnacept和btnReject,并添加了

因此,在您的帖子数据中,只需检查btnType中的值,看看是接受还是拒绝

或者只需在输入中添加标记名(就像我以前做的那样),就可以从请求数据中获得它。。。您应该将标记更改为,并在单击它时将其放在后端

编辑 您表单中的所有数据都将在
请求时发出。POST
(如果您以POST的形式发送),这样您就可以以
请求的形式获得它。POST['email']
这有点脏,因为如果您的POST中没有电子邮件将引发错误),或者更好的方法是
请求。POST.get('email',None)
,这就是尝试获取名为email的属性,如果找不到它,它将只返回None(null),因此您可以使用if或类似的东西来验证它

关于您的对象
tutor\u应用程序
,当您使用tutor\u application.tutor.chalkslateuser.email呈现模板时,该模板将仅作为电子邮件字符串,因此您在将其发送到前端时不会保留对象的引用,因此,如果你想知道选择了什么样的导师,你可能必须在html中添加id或电子邮件作为输入,这样你就可以将其发送回后端并确定导师是什么

<input type="hidden" name="email" value="{{tutor_application.tutor.chalkslateuser.email}}">

请记住将您的
标记更改为
,这样您就可以在后端将其作为请求中的属性获取。发布

您尝试手动实现而不是使用的任何特定原因?没有其他原因,我理解表单是需要填写的。这些卡只需要批准或拒绝。您是否建议将其封装在表单中?第一个参数是否以名称作为参数?我的视图还需要一个电子邮件地址来确定处理了哪张卡。如何将tutor_application.tutor.chalkslateuser.email之类的对象发送到我的视图?来自最终用户的数据是有害的,需要通过Django表单进行验证。要查看电子邮件地址,请使用EmailField。如何将诸如tutor\u application.tutor.chalkslateuser.email之类的对象发送到我的视图?我可以区分没有JQuery的按钮吗?您可以在视图中有多个按钮作为类型submit,当您单击它时,他将只发送该按钮,因此您可以检查请求数据中是否有第一个或第二个按钮来发送对象,如tutor_application等。。。在您的视图中,您应该将其添加到上下文中,或者您可以将locals()添加到您的返回中,这样您就可以将该视图中的所有变量传递到模板中,出于安全目的,您最好自己设置要发送到模板的内容,因此将每个变量添加到contextNo,我想从我的模板发送到我的视图中(并非相反)。这是因为我不仅需要知道按下了哪个按钮,还需要知道该按钮与哪个卡关联。因此,我需要发送此对象,tutor\u application.tutor.chalkslateuser.email。当您将视图中的数据发送到模板时,是所有文本,因此您会丢失对象的引用,它只是字符串,您可以做的是将数据传递给一些隐藏的输入,这样您就可以将其发送回后端。如果有人试图手动更改它,我建议您使用id并进行一些验证,检查浏览器中的html
{% for tutor_application in tutor_application_list %}

    <div class="card" style="width: 15rem;">
      <img src="{{ tutor_application.tutor.picture.url }}" class="card-img-top" >
      <div class="card-body">
        <h5 class="card-title">
            {{ tutor_application.tutor.chalkslate_user.first_name }} {{ tutor_application.tutor.chalkslate_user.last_name }}
        </h5>
        <h6 class="card-subtitle mb-2 text-muted">{{ tutor_application.note }}</h6>
        <h6 class="card-subtitle mb-2 text-muted">{{ tutor_application.posted }}</h6>
      </div>
      <input type="hidden" name="btnType">
      <a id="btnAccept" name="btnAccept" class="btn btn-outline-success" role="button" type="submit"> Accept </a>
      <a id=="btnReject" name="btnReject" class="btn btn-outline-danger" href="#" role="button"> Reject </a>
    </div>

{% endfor %}
window.addEventListener("DOMContentLoaded", function(){
    $("#btnAccept").click(function(){
        $("#btnType").val('accepted');
    });

    $("#btnReject").click(function(){
        $("#btnType").val('rejected');
    });
});
<input type="hidden" name="email" value="{{tutor_application.tutor.chalkslateuser.email}}">
email = request.POST.get('email', None')