在另一个方法django中访问GET请求

在另一个方法django中访问GET请求,django,django-forms,Django,Django Forms,我的html中有一个表单元素 <form action="" method="GET"> <input type="text" name="start_date" placeholder="From" value="{{ request.GET.start_date }}"> <input type="text" name="end_date" placeholder="To" value="{{ request.GE

我的html中有一个表单元素

<form action="" method="GET">
            <input type="text" name="start_date" placeholder="From" value="{{ request.GET.start_date }}">
            <input type="text" name="end_date" placeholder="To" value="{{ request.GET.end_date }}">
</form>
有什么问题吗?如何访问
开始日期
结束日期

编辑:使用此方法访问它的Im字符串:

def download_pdf(request):
    response = HttpResponse(content_type='application/pdf')
    response['Content-Disposition'] = 'attachment; filename=%s' % 'invoice.pdf'

    books = books.objects.all()
    date = request.GET.get('start_date', None)
    books.filter(order__date = temp)

    c = canvas.Canvas(response)
    c.drawText(date)
    c.showPage()
    c.save()
    return response

提交表单后,您可以获得
开始日期
结束日期
。像POST方法一样,GET表单也希望您从前端提交

<form action="." method="GET">
  <input type="text" name="start_date" placeholder="From" value="{{ request.GET.start_date }}">
  <input type="text" name="end_date" placeholder="To" value="{{ request.GET.end_date }}">
  <input type="submit" value="submit">
</form>
编辑:

在访问之前,您必须检查GET字典。因为开始日期不会出现在每个GET请求中。一旦用户提交了GET请求,我们就可以访问GET参数

start_date = request.GET.get('start_date')
if start_date:
    print(start_date)
编辑2:

# Create your views here.
def index(request):
    start_date = request.GET.get('start_date')
    if start_date:
        print(start_date)
    return render(request, 'base.html')


# base.html
<form action="." method="GET">
  <input type="text" name="start_date" placeholder="From" value="testing">
  <input type="text" name="end_date" placeholder="To" value="testing">
  <input type="submit" value="submit">
</form>
#在此处创建视图。
def索引(请求):
start\u date=request.GET.GET('start\u date')
如果开始日期:
打印(开始日期)
返回呈现(请求'base.html')
#base.html

是的,我已经这样做了。这会给我一个空字符串或者给我一个错误
异常值:“'start_date'”
是的,我也更新了我的答案。。。实际上,您必须确保GET请求中存在开始日期和结束日期,然后执行您的业务逻辑,否则只需将一些默认值传递给前端,…仍然没有:/I我已经用其他方法提交了。然后尝试访问它。有没有机会把它们放在一起,或者稍后访问请求?或者将日期对象设置为全局?请参见我的编辑2。这是有效的。。。为什么你有
值={{request.GET.start_date}}
在我看来,这没有任何意义。你能解释一下为什么会有这样的结果吗?那只是为了说明用户写下输入后输入的内容是什么?你为什么说“在另一种方法中”?这就是最初呈现表单的视图吗?如果没有,它们之间的关系是什么?我在之前提交
开始日期。我用它按日期过滤书籍。后来,当我想用相同的过滤值生成pdf时,我调用download_pdf这没有意义。您如何发送这些请求值以下载\u pdf?你需要展示你的全部代码。
start_date = request.GET.get('start_date')
if start_date:
    print(start_date)
# Create your views here.
def index(request):
    start_date = request.GET.get('start_date')
    if start_date:
        print(start_date)
    return render(request, 'base.html')


# base.html
<form action="." method="GET">
  <input type="text" name="start_date" placeholder="From" value="testing">
  <input type="text" name="end_date" placeholder="To" value="testing">
  <input type="submit" value="submit">
</form>