title: how to fix the 'AnonymousUser' object has no attribute 'profile' error?
body: <p>I'm writing a chat app for a hypothetical social network but when I try to open the chat page I give the following error 'AnonymousUser' object has no attribute 'profile' error .
  I think there may be problem in the models file but I can't really figure out how to fix it and I'm really confused now!? can anyone give any suggestions??</p>
  
  <p>parts of the chat views.py</p>
  
  <pre><code>def index(request):
  if request.method == 'POST':
      print request.POST
      request.user.profile.is_chat_user=True
  logged_users = []
  
  if request.user.username and request.user.profile.is_chat_user:
      context = {'logged_users':logged_users}
      cu = request.user.profile
      cu.is_chat_user = True
      cu.last_accessed = utcnow()
      cu.save()
  
      return render(request, 'djangoChat/index.html', context)
  
      try:
              eml = request.COOKIES[ 'email' ]
              pwd = request.COOKIES[ 'password' ]
      except KeyError:
              d = {'server_message':"You are not logged in."}
              query_str = urlencode(d)
  
              return HttpResponseRedirect('/login/?'+query_str)
  
      try:
                      client = Vertex.objects.get(email = eml)
                      context = {'logged_users':logged_users}
                      cu = request.user.profile
                      cu.is_chat_user = True
                      cu.last_accessed = utcnow()
                      cu.save()
                      if client.password != pwd:
                              raise LookupError()
      except Vertex.DoesNotExist:
                      sleep(3)
                      d = {'server_message':"Wrong username or password."}
                      query_str = urlencode(d)
                      return HttpResponseRedirect('/login/?'+query_str)
  
      return render_to_response('djangoChat/index.html',
  {"USER_EMAIL":eml,request.user.profile.is_chat_user:True},
  context_instance=RequestContext(request))
  
  
  
   @csrf_exempt
  def chat_api(request):
  if request.method == 'POST':
      d = json.loads(request.body)
      msg =  d.get('msg')
      user = request.user.username 
      gravatar = request.user.profile.gravatar_url
      m = Message(user=user,message=msg,gravatar=gravatar)
      m.save()
  
  
      res = {'id':m.id,'msg':m.message,'user':m.user,'time':m.time.strftime('%I:%M:%S %p').lstrip('0'),'gravatar':m.gravatar}
      data = json.dumps(res)
      return HttpResponse(data,content_type="application/json")
  
  
  # get request
  r = Message.objects.order_by('-time')[:70]
  res = []
  for msgs in reversed(r) :
      res.append({'id':msgs.id,'user':msgs.user,'msg':msgs.message,'time':msgs.time.strftime('%I:%M:%S %p').lstrip('0'),'gravatar':msgs.gravatar})
  
  data = json.dumps(res)
  
  
  return HttpResponse(data,content_type="application/json")
  
  def logged_chat_users(request):
  
  u = Vertex.objects.filter(is_chat_user=True)
  
  for j in u:
      elapsed = utcnow() - j.last_accessed
      if elapsed &gt; datetime.timedelta(seconds=35):
  
          j.is_chat_user = False
          j.save()
  
  uu = Vertex.objects.filter(is_chat_user=True)
  
  
  d = []
  for i in uu:
      d.append({'username': i.username,'gravatar':i.gravatar_url,'id':i.userID})
  data = json.dumps(d)
  
  
  return HttpResponse(data,content_type="application/json")
  </code></pre>
  
  <p>and parts of my chat models:</p>
  
  <pre><code>class Message(models.Model):
  user = models.CharField(max_length=200)
  
  message = models.TextField(max_length=200)
  time = models.DateTimeField(auto_now_add=True)
  gravatar = models.CharField(max_length=300)
  def __unicode__(self):
      return self.user
  def save(self):
      if self.time == None:
          self.time = datetime.now()
      super(Message, self).save()
  
  
  
  
  def generate_avatar(email):
             a = "http://www.gravatar.com/avatar/"
             a+=hashlib.md5(email.lower()).hexdigest()
             a+='?d=identicon'
             return a
  def hash_username(username):
             a = binascii.crc32(username)
             return a
   # the problem seems to be here ??!
   User.profile = property(lambda u: Vertex.objects.get_or_create(user=u,defaults={'gravatar_url':generate_avatar(u.email),'username':u.username,'userID':hash_username(u.username)})[0])
  </code></pre>
  
  <p>and finally parts of the another app(ChatUsers):</p>
  
  <pre><code>class Vertex(models.Model,object):
  user = models.OneToOneField(User)
  password = models.CharField(max_length=50)
  #user_id = models.CharField(max_length=100)
  
  username = models.CharField(max_length=300)
  userID =models.IntegerField()
  
  Message = models.CharField(max_length=500)
  firstname = models.CharField(max_length=50)
  lastname = models.CharField(max_length=50)
  email = models.EmailField(max_length=75)
  is_chat_user = models.BooleanField(default=False)
  gravatar_url = models.CharField(max_length=300,null=True, blank=True)
  last_accessed = models.DateTimeField(auto_now_add=True)
  </code></pre>