0

user を使用して login.html でユーザー プロファイル/img を取得できますか? すべてのページにログイン モジュールをロードしたいと考えています。テンプレートを含めるためのベスト プラクティスは何ですか?

モデル

class UserProfile(models.Model):
    User = models.ForeignKey(User, unique=True)
    ProfImg = models.FileField(upload_to='images')
    UserName = models.CharField(max_length=50)

def __unicode__(self):
    return self.UserName

base.html

<html>
<head>
<title>
</title>
</head>
<body>
{% include '/login.html' %}
</body>
</html>

login.html

{% if user.is_authenticated %}
    <div class ="profile-info">
        <img src="{{ MEDIA_URL }}{{ request.user.get_profile.ProfImg }}" width = "150" height = "150"  />
        Welcome {{ request.user.get_profile.UserName }}               
       <p>You last logged in on Tuesday the 19th of March, 2013 at 01:32pm.</p>
       <p align="center"><a href="#">Profile</a> | <a href="#">Logout</a></p>
 {% else %}

設定.py

AUTH_PROFILE_MODULE = "forums.UserProfile"

view.py

def login_request(request):

     username = request.POST.get("username")
     password = request.POST.get("password")

     user = authenticate(username=username, password=password)
     if user is not None:
         login(request, user)
         return redirect("/")
4

2 に答える 2

3
  1. ユーザーはOneToOneField
  2. フィールド名に大文字を使用しないでください。それは悪い習慣です。PEP8 (コーディングのスタイル) を読む必要があります。
  3. UserNameユーザー モデルで既に定義されているため、UserProfile モデルのフィールドを削除してください。

    class UserProfile(models.Model):
        user = models.OneToOneField(User)
        profimg = models.FileField(upload_to='images')
    
        def __unicode__(self):
            return "{0}".format(self.user.username)
    
    {% if user.is_authenticated %}
    <div class ="profile-info">
        <img src="{{ user.userprofile.profimg.url }}" width = "150" height = "150"  />
        Welcome {{ user }}               
       <p>You last logged in on Tuesday the 19th of March, 2013 at 01:32pm.</p>
       <p align="center"><a href="#">Profile</a> | <a href="#">Logout</a></p>
    {% else %}
    ............
    {% endif %}
    

テンプレートを使用してユーザー拡張情報にアクセスするには

 {{ user.userprofile.field_name }} or {{ request.user.userprofile.field_name }}

次に、あなたの見解で

 request.user.get_profile().field_name
于 2013-03-29T05:28:19.000 に答える
0

AUTH_PROFILE_MODULE が正しく設定されている場合は、user.get_profile.attribute を使用できます。

于 2013-03-29T05:56:34.387 に答える