0

私は単にそれを行う方法がわかりません。

2 つのボタンを使用して、既知の URL にリンクされた html があります。URL が 2 人のユーザー/ユーザーとのみ共有されていると想像してください。

各人が自分の名前に署名したボタンを押す必要があります。

request を使用してみましたが、そのビューで複数のユーザーがアクティブかどうかを知る方法がわかりませんでした。

もう1つのポイントは次のとおりです。

1 人が最初に URL に到達し、2 番目の URL が表示されたときにブラウザを「更新」するにはどうすればよいですか?

4

1 に答える 1

1

一部のモデルでは、誰がどのビューにいるかを保存する必要があります。

class UsersInURL(models.Model):
    users = models.ManyToManyField(User)
    url = models.CharField()
    # you'd probably want to use a through table and set up some expiration logic

次に、ログインしたユーザーがページを表示するたびに、このモデルを変更することを忘れないでください。ミドルウェアはこれに最適です。

class UserTrackerMiddleware(object):
    def process_view(self, request, *args, **kwargs):
          UsersInURL.users.through.filter(user=request.user).delete()
          users_in_url, created = UsersInURL.objects.get_or_create(url=request.path)
          users_in_url.users.add(request.user)

次に、ページを更新するには、サーバーとブラウザーの間で、このモデルに ping を送信し、変更が検出された場合に更新する何らかの通信を設定する必要があります。

var lastCheckedUsers = undefined;
function checkForNewUsers() {
    $.get('/some-ajaxy-url/', { url: document.URL }, success: function(data) {
         // you'd have to set up a view that returns active users @ url
         if (lastCheckedUsers != data.users && lastCheckedUsers != undefined) {
            window.location.href = window.location.href; 
         };
        lastCheckedUsers = data.users;  // store last state; refresh if modified. 
    })
};
setInterval(checkForNewUsers, 1000);

きっとアイデアが湧いてくるはずです。

于 2012-09-15T02:00:27.117 に答える