There may be several answers to your question, depending on whether you are ready to change the “use case” or not:
a) : , Django , .
b). : , ( ( /)) - .
c). "" -switch -, , gituub organization-switch facebook page/organization-switch, , github facebook.
c) SubProfile, "", SubProfile .
1) , - Subprofile django.contrib.auth.models.User, , . -, , , , , , -session. , "subprofile = 123". ., :
def select_subprofile(request):
if request.method == 'POST':
form = SubProfileSelectForm(request)
if form.is_valid():
subprofile = form.cleaned_data['subprofile']
url = '%s?subprofile' % (reverse('homepage'), subprofile)
return redirect(url)
else:
form = SubProfileSelectForm()
return render(request, 'myapp/subprofile_select.html', {'form':form})
.
2) .
middleware ( howtos on SO middlewares Django, , ), Subprofile request.user. SubProfile, , , , :
class SubProfileMiddleware(object):
def process_request(self, request):
subprofile = request.GET.get('subprofile', None)
if subprofile:
subprofile = Subprofile.objects.filter(user=request.user, id=subprofile)
if not subprofile:
raise Http403
else:
request.user.subprofile = subprofile
else:
request.user.subprofile = self.user.default_subprofile
, Subprofile Subprofile request.user. subprofile=123, , .
, Organization, , , post_on_organization_wall(subprofile, message, organization), , :
def organization_wall_post(request, organization):
organization = Organization.objects.get_object_or_404(organization)
if request.method == 'POST':
form = MessageForm(request.POST)
if form.is_valid():
post_on_organization_wall(request.user.subprofile, message, organisation)
else:
form = MessageForm()
return render(request, 'organisation/wall_post.html', {'form': form})
3) . - allcall {% url %} url, URL-. Django url.