あなたの懸念に対処するには:
1: 単純な Captcha でおそらくうまくいくでしょう。「django captcha」をグーグルで検索すると、たくさんのプラグインがあります。私自身は使ったことがないので、どれが一番良いとは言えません。
2 & 3: Django のセッションを使用すると、これらの問題の両方に対処できます。これを使用すると、ユーザーのブラウザーに Cookie を保存して、その人が既に投票したことを示すことができます。これにより、人々は明らかに別のブラウザーを介して、またはキャッシュをクリアすることで投票できるようになるため、人々が 2 回投票できないことがどれほど重要かによって異なります。ただし、実際にキャッシュをクリアしようと考える人はごくわずかだと思います。私が知る限り、サインイン プロセスなしでユーザーを制限する他の唯一の方法は、IP アドレスをテストすることですが、同じネットワーク上のユーザーが同じ IP アドレスを持っていると表示されるため、それは 2 番目の基準に違反します。
ブラウザーの Cookie を削除するだけの簡単な方法で複数の投票を行いたくない場合は、facebook または twitter のログインを許可することもできます。django-socialregistration プラグインは十分に文書化されており、簡単に実装できます。
それが役立つことを願っています!