Five Iraqi soldiers are also missing in the fighting which started on Sunday with members of Jaish al-Mahdi, a militia loyal to Muqtada al-Sadr, a Shia cleric who is part of the ruling Shia Alliance.
The clashes started after US troops refused to release a leader of the al-Mahdi Army who was arrested on Saturday.
Ahmed al-Haji, who is in charge of security at the town’s main hospital, said on Monday that the bodies of 25 soldiers and nine civilians had been brought in. There are at least 70 injured civilians he said.
Residents said they saw armed men loading the bodies of Iraqi soldiers on to vehicles.
Local leaders said the men from the al-Mahdi Army were operating independently, after rejecting a call from al-Sadr for them to take part in Iraq‘s peace process.
Abdumunaam Abu Tibikh of the provincial council of Qadisiyah, of which Diwaniya is capital, said: “What is going on is an attempt by the government to get rid of an element which is trying to disturb the security of the town.”
Abu Tibikh said fighters in the city had been ordered by al-Sadr to put down their guns and to convert their office into a centre for religious and cultural activities, but that they had refused to do so.
“These elements have triggered riots and carry weapons in the city, which has led the government to deploy army and the police against them,” he said.
The head of al-Sadr’s office in the city, Abu Assen Naili, confirmed that there had been fighting, but accused the army of attacking three residential neighbourhoods and opening fire on civilians.
Nuri al-Maliki, the prime minister, has said he will disband militias as part of his national reconciliation drive. This may prove difficult as several armed groups are tied to parties in his coalition.