python - django view Session ID -missing for user not logged in -
on current project want user able fill in forms without having sign first (to make them more use service).
on below view i'm trying either save registered user form data, or if user isn't registered save session id temporary user id.
however when try use session id returns none. i'm not sure why data missing? (session have default django setup in apps , middleware per docs). note when user logged in seem have user id not when no user logged in.
view:
class servicetypeview(createview): form_class = servicetypeform template_name = "standard_form.html" success_url = '/' def form_valid(self, form): if self.request.user.is_authenticated(): form.instance.user = self.request.user else: form.instance.temp_user = self.request.session.session_key super().form_valid(form) online_account = form.cleaned_data['online_account'] if online_account: return redirect('../online') else: return redirect('../address') model:
class euser(models.model): supplier1 = models.onetoonefield(supplieraccount) supplier2 = models.onetoonefield(supplieraccount) supplier3 = models.onetoonefield(supplieraccount) online_account = models.booleanfield() address = models.onetoonefield(address, null=true) temp_user = models.charfield(max_length=255, null=true) user = models.onetoonefield(settings.auth_user_model, null=true, default=none) class supplieraccount(models.model): supplier = models.foreignkey(supplier) username = models.charfield(max_length=255) password = models.charfield(max_length=255) form:
class servicetypeform(forms.modelform): # bool_choices = ((false, 'no'), (true, 'yes')) # online_account = forms.booleanfield(widget=forms.radioselect(choices=bool_choices)) def __init__(self, *args, **kwargs): super(servicetypeform, self).__init__(*args, **kwargs) self.fields['service_type'].initial = 'd' class meta: model = euser fields = ('service_type', 'online_account')
the session key exist if there data set in session dictionary already. logged in users have session key because django stores authentication related data in session default, key assigned because of that.
you can ensure key exists tossing data session storage before trying key.
Comments
Post a Comment