Complex objects passed as args/kwargs between class based views in Django
up vote
0
down vote
favorite
I currently have a SessionWizardView from formtools package implemented.
class DataframeFormView(SessionWizardView):
def done(self,form_list):
params={}
for form in form_list:
params.update(form.cleaned_data)
return HttpResponseRedirect(reverse('download',kwargs={'params':params}))
Everything is working fine in the forms view, and when the forms are successfully filled the above mentioned function runs, however I need to pass the params argument to another view:
from django_downloadview import VirtualDownloadView, VirtualFile
class DataframeDownloadView(VirtualDownloadView):
def get_file(self):
### Access params dictionary here!!!!
return VirtualFile(tfile.name, name=tfile.name)
Thing I've tried:
1) override __init__ to add self.params = kwargs.pop('params')
2) create method to access to kwargs specific key params using return self.kwargs['params']
3) Mixin solution (probably badly implemented but I thing there are constraints in these two CBVs)
Ultimately, suing method 1 and 2, I manage to access merely to a string representation of the params dictionary through reversing to download/url/. I need a more programatically solution to obtain the original dict object. TLDR: How can I pass complex objects between views.
Best regards,
python django django-formtools
add a comment |
up vote
0
down vote
favorite
I currently have a SessionWizardView from formtools package implemented.
class DataframeFormView(SessionWizardView):
def done(self,form_list):
params={}
for form in form_list:
params.update(form.cleaned_data)
return HttpResponseRedirect(reverse('download',kwargs={'params':params}))
Everything is working fine in the forms view, and when the forms are successfully filled the above mentioned function runs, however I need to pass the params argument to another view:
from django_downloadview import VirtualDownloadView, VirtualFile
class DataframeDownloadView(VirtualDownloadView):
def get_file(self):
### Access params dictionary here!!!!
return VirtualFile(tfile.name, name=tfile.name)
Thing I've tried:
1) override __init__ to add self.params = kwargs.pop('params')
2) create method to access to kwargs specific key params using return self.kwargs['params']
3) Mixin solution (probably badly implemented but I thing there are constraints in these two CBVs)
Ultimately, suing method 1 and 2, I manage to access merely to a string representation of the params dictionary through reversing to download/url/. I need a more programatically solution to obtain the original dict object. TLDR: How can I pass complex objects between views.
Best regards,
python django django-formtools
1
If you need to keep a significant amount of state around between page loads, you might consider using the session rather than trying to pass it around in the URL.
– kungphu
Nov 8 at 5:30
add a comment |
up vote
0
down vote
favorite
up vote
0
down vote
favorite
I currently have a SessionWizardView from formtools package implemented.
class DataframeFormView(SessionWizardView):
def done(self,form_list):
params={}
for form in form_list:
params.update(form.cleaned_data)
return HttpResponseRedirect(reverse('download',kwargs={'params':params}))
Everything is working fine in the forms view, and when the forms are successfully filled the above mentioned function runs, however I need to pass the params argument to another view:
from django_downloadview import VirtualDownloadView, VirtualFile
class DataframeDownloadView(VirtualDownloadView):
def get_file(self):
### Access params dictionary here!!!!
return VirtualFile(tfile.name, name=tfile.name)
Thing I've tried:
1) override __init__ to add self.params = kwargs.pop('params')
2) create method to access to kwargs specific key params using return self.kwargs['params']
3) Mixin solution (probably badly implemented but I thing there are constraints in these two CBVs)
Ultimately, suing method 1 and 2, I manage to access merely to a string representation of the params dictionary through reversing to download/url/. I need a more programatically solution to obtain the original dict object. TLDR: How can I pass complex objects between views.
Best regards,
python django django-formtools
I currently have a SessionWizardView from formtools package implemented.
class DataframeFormView(SessionWizardView):
def done(self,form_list):
params={}
for form in form_list:
params.update(form.cleaned_data)
return HttpResponseRedirect(reverse('download',kwargs={'params':params}))
Everything is working fine in the forms view, and when the forms are successfully filled the above mentioned function runs, however I need to pass the params argument to another view:
from django_downloadview import VirtualDownloadView, VirtualFile
class DataframeDownloadView(VirtualDownloadView):
def get_file(self):
### Access params dictionary here!!!!
return VirtualFile(tfile.name, name=tfile.name)
Thing I've tried:
1) override __init__ to add self.params = kwargs.pop('params')
2) create method to access to kwargs specific key params using return self.kwargs['params']
3) Mixin solution (probably badly implemented but I thing there are constraints in these two CBVs)
Ultimately, suing method 1 and 2, I manage to access merely to a string representation of the params dictionary through reversing to download/url/. I need a more programatically solution to obtain the original dict object. TLDR: How can I pass complex objects between views.
Best regards,
python django django-formtools
python django django-formtools
edited Nov 8 at 3:51
ruddra
9,76332547
9,76332547
asked Nov 8 at 3:27
André Guerra
27110
27110
1
If you need to keep a significant amount of state around between page loads, you might consider using the session rather than trying to pass it around in the URL.
– kungphu
Nov 8 at 5:30
add a comment |
1
If you need to keep a significant amount of state around between page loads, you might consider using the session rather than trying to pass it around in the URL.
– kungphu
Nov 8 at 5:30
1
1
If you need to keep a significant amount of state around between page loads, you might consider using the session rather than trying to pass it around in the URL.
– kungphu
Nov 8 at 5:30
If you need to keep a significant amount of state around between page loads, you might consider using the session rather than trying to pass it around in the URL.
– kungphu
Nov 8 at 5:30
add a comment |
1 Answer
1
active
oldest
votes
up vote
0
down vote
As suggested by kungphu, probably the best way to share complex objects between views is using the view session.
For future reference, I end up doing the following:
def done(self,form_list,**kwargs):
params={}
for form in form_list:
params.update(form.cleaned_data)
self.request.session['params']=params
return HttpResponseRedirect(reverse(self.download_url_name))
and I also changed the session serializer to pickle.
add a comment |
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
0
down vote
As suggested by kungphu, probably the best way to share complex objects between views is using the view session.
For future reference, I end up doing the following:
def done(self,form_list,**kwargs):
params={}
for form in form_list:
params.update(form.cleaned_data)
self.request.session['params']=params
return HttpResponseRedirect(reverse(self.download_url_name))
and I also changed the session serializer to pickle.
add a comment |
up vote
0
down vote
As suggested by kungphu, probably the best way to share complex objects between views is using the view session.
For future reference, I end up doing the following:
def done(self,form_list,**kwargs):
params={}
for form in form_list:
params.update(form.cleaned_data)
self.request.session['params']=params
return HttpResponseRedirect(reverse(self.download_url_name))
and I also changed the session serializer to pickle.
add a comment |
up vote
0
down vote
up vote
0
down vote
As suggested by kungphu, probably the best way to share complex objects between views is using the view session.
For future reference, I end up doing the following:
def done(self,form_list,**kwargs):
params={}
for form in form_list:
params.update(form.cleaned_data)
self.request.session['params']=params
return HttpResponseRedirect(reverse(self.download_url_name))
and I also changed the session serializer to pickle.
As suggested by kungphu, probably the best way to share complex objects between views is using the view session.
For future reference, I end up doing the following:
def done(self,form_list,**kwargs):
params={}
for form in form_list:
params.update(form.cleaned_data)
self.request.session['params']=params
return HttpResponseRedirect(reverse(self.download_url_name))
and I also changed the session serializer to pickle.
answered Nov 9 at 18:27
André Guerra
27110
27110
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53201134%2fcomplex-objects-passed-as-args-kwargs-between-class-based-views-in-django%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
1
If you need to keep a significant amount of state around between page loads, you might consider using the session rather than trying to pass it around in the URL.
– kungphu
Nov 8 at 5:30