0

project_list() ビューは、既存のすべてのプロジェクトを一覧表示し、新しいプロジェクトを追加するオプションを提供します。new_project() は、その新しいプロジェクトの作成を処理し、project() ビューにリダイレクトするか、フォームを含む project_list() に戻して、エラーを表示できるようにします。

どうにかして同じレンダリング機能を使用する必要があると考え続けています。その理由は、約 1 週間、ページが適切に読み込まれた後、プロジェクトがリストされていないことに気付かなかったform.is_valid() == False(2 回目のレンダリングでプロジェクト変数を含めるのを忘れていた) ためです。

@login_required
def project_list(request):
    projects = request.user.project_set.all()
    return render(request, 'projects/project_list.html', 
                  {'form': ProjectForm(),'projects': projects})

@login_required
def new_project(request):
    form = ProjectForm()
    if request.method == 'POST':
        form = ProjectForm(data=request.POST)
        if form.is_valid():
            project = form.save(commit=False)  #must specify user before commit
            project.owner = request.user
            project.save()
            return redirect(project)

    return render(request, 'projects/project_list.html', 
                  {"form": form, 'projects': request.user.project_set.all()})


def project(request, project_id):
    ....

このロジックを分離したまま、同じレンダリング呼び出しを使用するにはどうすればよいですか?

また、仮に、別の追加変数を使用して 3 回目のレンダリングが必要になった場合、どのように説明すればよいでしょうか?

4

1 に答える 1