django bootstrap 表单中的提交按钮不起作用

时间:2021-03-20 10:44:18

标签: django

我是 django 项目的初学者。

我正在创建一个简单的应用程序,它使用来自 api 的数据在地图上绘制地震位置。 我的应用程序的一项功能是可以将日期范围粘贴到我的 api 查询中。

我制作了包含日期选择器和我认为应该处理它的视图中的代码的表单。

我有问题,因为我的提交按钮应该从日期选择器获取数据不起作用。 或者可能是我在我的观点中做错了什么,它无法将数据从 post 方法传送到变量 datebegdateend
有什么想法吗?

views.py

def graph(request):

#=========data=========================================================================
    datebeg='2021-03-19'
    dateend='2021-03-20'
    if request.method == 'post':
        datebeg=request.POST['datebeg']
        dateend = request.POST.get("dateend")

        if datebeg=='':
            datebeg='2021-03-21'
        if dateend=='':
            dateend='2021-03-21'

graph.html

<body>
<div class="container my-container">
    <form  action="{% url 'graph' %}" method="post">
        {% csrf_token %}
        <div class= "row my-row">
              <div class="col-4 my-col">


                          Trzęsienia ziemi z zakresu dat:

              </div>
              <div class="col-4 my-col">

                  od:
                  <input type="date" placeholder="0" name="datebeg" size="1" />

              </div>
              <div class="col-4 my-col">
                  do:
                       <input type="date" placeholder="0" name="dateend" size="1" />
              </div>


          <a class="btn btn-primary" type="submit" href="{% url 'graph'%}" >Pokaż na mapie</a>
          </div>

    </form>

</div>

图/urls.py

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

urlpatterns = [

    path('', views.graph,name='graph'),
]

1 个答案:

答案 0 :(得分:0)

如果条件无效,则为您的 你需要使用

if request.method == 'POST':

在 Django 3> 中,最佳实践是使用基于类的视图,在以下情况下您不需要添加该条件:

from django.http import HttpResponse
from django.views import View

class MyView(View):
    def post(self, request):
        # <view logic>
        return HttpResponse('result')

您可以在那里阅读更多相关信息Django-Class-Based-Views-Intro