ユーザー プロファイルを表示する Web アプリを作成しています。
プロファイルには、interest
単方向または双方向のユーザーの他のユーザーの表示が含まれます。User
認証と承認を処理するために、django に含まれているモデルを使用しています。
私が抱えている問題は、状況によっては、レンダリングされたページが以前に実行されたクエリからのデータを提示することです。具体的には、これは、同じコンピューター上で異なるブラウザー (OS X では Chrome と Safari、django 開発 Web サーバーを使用) で 2 人の異なるユーザーとしてアプリを使用している場合に発生します。ユーザー 1 のページを読み込んだ直後に、ユーザー 2 のページをリロードすると、ユーザー 1 のクエリ結果が表示されます。
クエリをコンソールに出力して、クエリが正しいことを確認しました。サーバーの再起動直後にページが適切なクエリをロードするため、問題は Web サーバーにある可能性があると思います。
何か案は?
** 編集: Daniel が指摘しているように、問題は、interest_view 関数がデフォルトのパラメーターとして辞書を持っていることです。**
関連するコード スニペット:
models.py
class Profile(UserenaBaseProfile):
user = models.OneToOneField(User, unique=True)
class Interest(models.Model):
user = models.ForeignKey(User, related_name=u'interests')
interest = models.ForeignKey(User)
views.py
from django.http import HttpResponseForbidden
from django.shortcuts import get_object_or_404, render_to_response
from django.template import RequestContext
def interest_view(request, username, extra_context={}):
user = get_object_or_404(User, username__iexact=username)
profile = user.get_profile()
if not profile.can_view_profile(request.user):
return HttpResponseForbidden("You can't view this page.")
interests = Interest.objects.filter(user=user)
if len(interests) > 0:
extra_context['active_interests'] = interests
return render_to_response('interest_detail.html',
extra_context,
context_instance=RequestContext(request)
)
interest_detail.html
{% if active_interests %}
{% for interest in active_interests %}
<li>
{{ interest.interest.first_name }} {{ interest.interest.last_name }}
</li>
{% endfor %}
{% endif %}