2013-03-29 83 views
0

我可以使用用戶在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 %} 

settings.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("/") 

回答

3
  1. 用戶必須是OneToOneField
  2. 請不要在你的領域名稱中使用字母上。這是一個不好的做法。你必須閱讀PEP8(編碼風格)。
  3. 請刪除UserProfile模型中的UserName字段,因爲它已在用戶模型中定義。

    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 
+1

我試過你的代碼但它沒有任何回報。我也試過'',但結果相同 – unice

+0

您需要修復您的代碼 – catherine

+0

感謝您的更正。我會嘗試你所說的。我稍後會回來看看結果。 – unice

0

如果您在AUTH_PROFILE_MODULE正確設置,您可以使用user.get_profile 。屬性

+0

我試過{{user.get_profile.ProfImg}},但它給我一個錯誤「無法解析關鍵字'用戶'進入字段。選擇是:ProfImg,用戶名 – unice

+0

你能顯示更多的代碼嗎?我認爲你沒有用戶在功能範圍內,請嘗試request.user – dusual

+0

沒有錯誤但沒有返回任何內容我更新了我的問題中的代碼用戶名返回當我僅使用{{user}} – unice

相關問題