2017-11-20 10 views
0

私は自分のhtmlにフォーム要素を持っています。別の方法でGETリクエストにアクセスするdjango

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

私は私のview.pyのいずれかの方法内start_dateend_dateにアクセスしたいが、イムはどれもすべての時間を取得していません。 は、これまで私が試してみました:

temp = request.GET.get('start_date', None) 
temp = request.GET['start_date'] 

問題がある可能性がありますか? start_dateend_dateにアクセスするにはどうすればよいですか?

EDIT:イムこの方法でそれにアクセスするためにトリング:あなたはそのフォームを送信すると

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 
+0

は、なぜあなたは、「別の方法では」言うのですか?それは最初の場所でフォームをレンダリングしているのと同じビューですか?彼らの間の関係は何ですか? –

+0

前に 'start_date'を提出します。私は日付で本をフィルタリングするためにそれを使用します。そして、後で、同じフィルタリングされた値でpdfを作成したいときは、私はdownload_pdfを呼び出します。 – AverageJoe9000

+0

これは意味がありません。これらのリクエスト値をどのようにdownload_pdfに送信していますか?コード全体を表示する必要があります。 –

答えて

1

あなたはstart_dateend_dateを得ることができます。 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> 

または、フォームメソッドを忘れて、URLのパラメータを追加するだけで十分です。このような...

http://localhost:8000/?start_date=test_start_date&end_date=test_end_date 

編集:

あなたがアクセスする前にGET辞書を確認する必要があります。 start_dateはすべての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> 
+0

はい、私はそれをしました。これは私に空の文字列を与えるか、または私にエラーを与える "例外値:\t " 'start_date' " – AverageJoe9000

+0

私の質問を編集した – AverageJoe9000

+0

ええ、私も答えを更新...実際には、start_dateとend_dateを確認する必要がありますGETリクエストであなたのビジネスロジックを行うだけで、何かをフロントエンドにデフォルトで渡します。 –

関連する問題