2017-11-20 5 views
1
  • 下記のビュー機能を試してみましたか?
  • よく一致してレンダリングされます。
  • しかし、テンプレートをレンダリングするときに使用されるURLがどのように決定されるかは、実験/検索 で把握することができませんでした。
  • 一致/受信URLは「rec/play/new /」です。
  • render()は、同じURLを使用しているようです。 "rec/play/new /"
  • いつもそうですか?このURLをどのように使用するかを決定します。 リターンレンダー(None、 'play/edit.html'、{'form':RecForm()}) - 依然としてURLを使用してレンダリングしています"rec/play/new /"。それはどうしていますか?render()はレンダリングテンプレートのURLをどのように決定するのですか

    def rec_new(request): 
        #matching url is "rec/play/new/" 
        if request.method == "POST": 
        form = RecForm(request.POST) 
        if form.is_valid(): 
         model = form.save(commit=False) 
         model.save() 
         return redirect('detail', pk=model.pk) 
        else: 
         return render(request, 'play/edit.html', {'form': RecForm()}) 
    

答えて

2

render() URLを決定されていません。あなたのブラウザが特定のURLのリクエストを送信すると、djangoは、そのURLのために返されるデータがどのテンプレートに埋め込まれているかを調べています。

requestは、コンテンツの生成に役立ちます。

return HttpResponse(content, content_type, status) 

HTTP Response documentation

+0

ああ - 私はurl "X"で私たちの応答を待っているブラウザ/クライアント/ URLを描いていませんでした。そして "X"は変化しない - それを得た。リダイレクト/その他のみがURLを変更します。 Thx pk。 – Gary

2

あなたはDjangoの要求応答サイクルを誤解:しかし、あなたはrender()を使用する必要はありませんし、代わりに直接HTTPResponse()を返すことができることに注意してください。この絵を見てみましょう: Django request-response cycle

私はあなたの言葉を使用する場合は、render()urlを使用していない、それは周りの他の方法です。最初のリクエストはリクエストミドルウェア、次にURL解決、ビューミドルウェアを経て表示され、テンプレートのレンダリングが行われ、応答ミドルウェア処理が完了します。これですべてのサーバーがコンテンツをブラウザに転送します。

urlは、viewの処理対象を定義し、viewは、templateのレンダリング対象を定義します。

+0

Thx Borut;多分私はそれを得たと思う。ブラウザ(現在のURL)は保存され(待機中)、変更されません。例えば私たちはリダイレクトします。どうも。 – Gary

関連する問題