Thousands of people have joined a protest against Donald Trump’s upcoming appearance at Nato, marching through Brussels to plead for less military spending and more public money for schools and clean energy.

The Trump Not Welcome march and a companion concert came as European and North American leaders prepare for an annual summit at Nato’s headquarters in the city.

The US president accuses Nato allies of not doing enough to defend themselves and is demanding that they increase their military budgets.

The protest organisers oppose more military spending, and the event attracted a high-spirited, diverse crowd of thousands that marched through central Brussels while demonstrating on behalf of multiple causes during the peaceful march.

Trump protestThousands of people took part in the demonstration (Geert Vanden Wijngaert/PA)

One banner held aloft by protesters read “Nato game over”, while another said “Pro-America, anti-Trump”.

Some protesters waved rainbow banners and Palestinian and Cuban flags.

Others campaigned for keeping immigrant families together or stopping austerity plans that hurt the poor, for the closure of coal and nuclear plants, or for an end to racism and sexism.

Trump protestA child lay in a cage during the protest, highlighting the row over the US policy of splitting up immigrant families (Geert Vanden Wijngaert/AP)

Mr Trump is heading for Europe as his protectionist trade policies and withdrawal from the Paris climate accord continue to anger some of the leaders he will see at the Nato talks.

Members of the western military alliance have agreed on a goal of each country devoting 2% of GDP to defence within a decade. The alliance agreed to stop cutting defence budgets after Russia annexed Ukraine’s Crimea in 2014.

Mr Trump’s aggressive stance towards Nato allies who have not acted to meet the target has created tension.

He wrote to the leaders of Denmark, Norway, Canada and Germany last month to ratchet up the pressure, saying “the United States is increasingly unwilling to ignore the European failure to meet shared security commitments”.