Django错误 - TemplateSyntaxError at / 无法解析剩余部分:'['userType']' from '['userType']'

3
 {% if 'is_logged_in' in request.session %} {% if request.session['userType'] == 0 %} {% include 'headersuccess.html' %} {% else %}dfgh {% endif %}

这是我的代码。我正在检查两个条件,但是出现了上述错误。请有人帮助我解决这个问题吗?

我的views.py文件如下:

@csrf_exempt
def index(request):
    if('is_logged_in' in request.session):
        id = request.session['authToken'];
        return render(request,"index.html",{'uid':id});
    else:
        return render(request,"index.html",{});

views.py(服务器)

这是我的服务器代码,在请求中存在userType的session。

@csrf_exempt
def login_user(request):
    user = None
    try:
        #user = models.user.objects.get(Q(user_name=request.POST['key'])|Q(contact__email=request.POST['key']))#|Q(contact__phone=request.POST['key']))
        user = models.user.objects.get(Q(user_name=request.POST['key'])|Q(email=request.POST['key']))#|Q(contact__phone=request.POST['key']))

        pswd = pass_enc(request.POST['password'],user.token)

        if user.password == pswd:

            #create signed auth token
            data = {
                'uid' : user.uid,
                'userType' : user.userType,
                'is_agent' : user.is_agent,
                'is_new'   : user.is_new,
                'is_admin' : user.userType == 8,
                'created_at':time.time()
            }

            signedToken = create_crypt_header(data)

            session = None

            try:
                session = models.session.objects.get(user=user)
                session.activeSession += 1
                session.save()
            except Exception as e:
                session = models.session(
                    user=user,
                    activeSession=1
                )
                session.save()
            #handel weblogin

            ajax_token = create_crypt_header({'val':1,'at':time.time()})

            request.session['authToken'] = signedToken
            request.session['v'] = 1
            request.session['ajax_token'] = ajax_token
            request.session['is_logged_in'] = True

            return JsonResponse({'authentication' : True,'authToken':signedToken,"userType":user.userType,'session_mask':session.sessionId,'is_new':user.is_new})
        else:
            return JsonResponse({'authentication' : False})

    except Exception as e:
        return JsonResponse({'authentication': False})

这是我的代码。我正在检查两个条件,但是我得到了上面的错误。有人能帮我解决这个问题吗?
1个回答

1

访问字典元素的模板内方法是使用.request.session.userType

同时,如果您只需要一个,就不需要两个if: {% if 'is_logged_in' in request.session and request.session.userType == 0 %}。如果您的代码中有两个if块,则需要添加两个{% endif %}语句。


当我尝试这种方式时,if条件语句没有起作用。 - med
1
也许可以指出,OP有两个if语句和一个endif。 - j-i-l
@med,我没有看到你在哪里将userType添加到会话中。你应该在login_user视图中添加:request.session['userType'] = user.userType - neverwalkaloner

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接