[guided]The only point needing computation is closure under the commutator. We define the candidate commutator as the $F$-linear map
\begin{align*}
C:\mathfrak h &\to \mathfrak h \\
u &\mapsto D_1(D_2(u))-D_2(D_1(u)).
\end{align*}
To prove $C$ is a derivation, we must prove
\begin{align*}
C([u,v]_{\mathfrak h})
=
[C(u),v]_{\mathfrak h}+[u,C(v)]_{\mathfrak h}
\end{align*}
for arbitrary $u,v \in \mathfrak h$.
Start with the first composition. Since $D_2$ is a derivation,
\begin{align*}
D_2([u,v]_{\mathfrak h})
=
[D_2(u),v]_{\mathfrak h}+[u,D_2(v)]_{\mathfrak h}.
\end{align*}
Now apply $D_1$ to both bracket terms, using both $F$-linearity and the derivation rule for $D_1$:
\begin{align*}
D_1(D_2([u,v]_{\mathfrak h}))
&= D_1\bigl([D_2(u),v]_{\mathfrak h}+[u,D_2(v)]_{\mathfrak h}\bigr) \\
&= [D_1(D_2(u)),v]_{\mathfrak h}
+ [D_2(u),D_1(v)]_{\mathfrak h} \\
&\quad + [D_1(u),D_2(v)]_{\mathfrak h}
+ [u,D_1(D_2(v))]_{\mathfrak h}.
\end{align*}
Interchanging the roles of $D_1$ and $D_2$ gives
\begin{align*}
D_2(D_1([u,v]_{\mathfrak h}))
&= [D_2(D_1(u)),v]_{\mathfrak h}
+ [D_1(u),D_2(v)]_{\mathfrak h} \\
&\quad + [D_2(u),D_1(v)]_{\mathfrak h}
+ [u,D_2(D_1(v))]_{\mathfrak h}.
\end{align*}
The reason the commutator works is that the two mixed terms appear with the same sign in both expansions:
\begin{align*}
[D_2(u),D_1(v)]_{\mathfrak h}
\quad\text{and}\quad
[D_1(u),D_2(v)]_{\mathfrak h}.
\end{align*}
They therefore cancel after subtraction. Hence
\begin{align*}
C([u,v]_{\mathfrak h})
&= D_1(D_2([u,v]_{\mathfrak h}))-D_2(D_1([u,v]_{\mathfrak h})) \\
&= [D_1(D_2(u))-D_2(D_1(u)),v]_{\mathfrak h}
+ [u,D_1(D_2(v))-D_2(D_1(v))]_{\mathfrak h} \\
&= [C(u),v]_{\mathfrak h}+[u,C(v)]_{\mathfrak h}.
\end{align*}
Thus the commutator of two derivations is again a derivation.[/guided]