Django pass object from view to next for processing

后端 未结 2 1519
小鲜肉
小鲜肉 2021-02-08 23:02

If you have 2 views, the first uses modelform that takes inputted information from the user (date of birth, name, phonenumber, etc), and the second uses this information to crea

相关标签:
2条回答
  • 2021-02-08 23:48

    Use a HttpResponseRedirect to direct to the table view w/the newly created object's id. Here's an abbreviated example:

    def first(request):
        if request.method == 'POST':
              form = MyModelForm(request.POST, request.FILES)
              if form.is_valid():
                   my_model = form.save()
    
                   return HttpResponseRedirect('/second/%s/' % (my_model.pk)) # should actually use reverse here.
          # normal get stuff here
    
    def second(request, my_model_pk):
         my_model = MyModel.objects.get(pk=my_model_pk)
    
         # return your template w/my model in the context and render
    
    0 讨论(0)
  • 2021-02-08 23:51

    One approach is to put the object into a session in your first view, which you could then retrieve from the request.session in the second view.

    def first_view(request):
        my_thing = {'foo' : 'bar'}
        request.session['my_thing'] = my_thing
        return render(request, 'some_template.html')
    
    def second_view(request):
        my_thing = request.session.get('my_thing', None)
        return render(request, 'some_other_template.html', {'my_thing' : my_thing})
    
    0 讨论(0)
提交回复
热议问题