django account helper utils for django.contrib.auth
- Django1.8+
pip install django_acocunt_helper
- check your settings.py, make sure django.contrib.auth in INSTALLED_APPS.
- add account_helper.middleware.CurrentUserMiddleware
config finish.
update your model like this:
before
owner = models.ForeignKey(settings.AUTH_USER_MODEL)
after
from account_helper.middleware import get_current_user
# ... fields definition...
owner = models.ForeignKey(settings.AUTH_USER_MODEL, default=get_current_user, null=True)
update your model like this:
before
owner = models.IntegerField('user id')
after
from account_helper.middleware import get_current_user_id
# ... fields definition...
owner = models.IntegerField('user id',default=get_current_user_id)
sometimes we really need handle session in form. but in django. we have to do something like this.
- in your views. set get_form_kwargs
class YourFormView(FormView):
form_class=YourForm
def get_form_kwargs(self):
return {'request':self.request}
pass
pass
2.set your form.
Class YourForm(forms.Form):
request = None
def __init__(self,*args,**kwargs):
self.request = kwargs.get('request')
if 'request' in kwargs:
del kwargs['request']
super (YourForm,self).__init__(*args,**kwargs)
from account_helper.middleware import get_current_session
Class YourForm(forms.Form):
def clean(self):
session = get_current_session()
if self.cleaned_data.get('foo') == session.get('foo'):
# do something
pass
#... your code
pass
from account_helper.mixins import LoginDispatchMixin
class GenericListingView(LoginDispatchMixin, TemplateView):
template_name = 'accounts/profile.html'
pass