Проблема здесь в том, что request.user всегда переключается на AnonymousUser после перенаправления. Я пишу свой собственный метод входа и аутентификацию, потому что я не использую пароль для входа. Вот мой код
#app/view.py
def login(request):
template = 'index.html'
if request.method == "POST":
userId = request.POST.get('userId', '')
displayName = request.POST.get('displayName', '')
user = auth.authenticate(userId=userId, displayName=displayName)
if user.is_authenticated:
auth.login(request, user)
return redirect('home') ##### if change to "render(request, template, locals())", will see request.user as logged in user #####
else:
return render(request, template, locals())
else:
return HttpResponse('')
def home(request):
template = 'index.html'
user = request.user
return render(request, template, locals())
Я проверяю, вошел ли request.user в систему javascript. Если нет, используйте функцию post для / login / URI. Liff.getProfile () - моя сторонняя javascript функция для получения userId и displayName из профиля.
#html.javascript
DjangoLogin="{{request.user}}";
if (DjangoLogin=="AnonymousUser"){
liff.getProfile().then(function(profile) {
userId = profile.userId;
displayName = profile.displayName;
post('/login/',{ 'userId': userId, 'displayName': displayName, 'csrfmiddlewaretoken': '{{ csrf_token }}'});
});