2012-03-27 44 views
0

我有一個頁面列出了用戶完成的問題(在C編程:-))。說,有10個,每個登錄用戶都可以訪問這些。要顯示正確的方法來存儲和顯示用戶特定的狀態

頁是這樣的:

<table> 
<tr> 
<th>Test desc</th> 
<th>Test state</th> 
</tr> 
{% for t in test%} 
<tr> 
<td>{{ t.desc }}</td> 
<td>'display a image if it is completed else another image'</td> 
</tr> 
{% endfor %} 
</table> 

用戶轉發到這個網頁views.py

def test(request): 
    cProblems = Problems_c.objects.all() 
    return render_to_response('subject/test.html', {'list':cProblems}) 

我需要知道兩件事情。

  1. 如何在django中存儲這個額外的用戶特定信息。
  2. 如何在網頁

回答

1

首先顯示出來,請使用render()而非render_to_response()這個。這會讓你免於常見的陷阱。

如何存儲在Django

這個附加用戶特定信息,請參閱有關storing additional user information的文檔。

如何在網頁上顯示它們

您可以使用通用DetailView

  1. 進口的DetailView在urls.py,即from django.views import generic

  2. 進口用戶模型urls.py,即from django.contrib.auth.models import User

  3. 爲添加URL在urls.py,即url(r'^/user/(?P<pk>\d+)/$', views.DetailView.as_view({'model': user, 'context_object_name': 'object'}))

  4. 創建模板,在模板/ auth /中user_detail.html

  5. 打開網址/ user/1/以查看呈現的模板

您的模板可以是這樣的:

<h1>This is the page of {{ object.username }}</h1> 

<p>Additional info: {{ object.get_profile.your_extra_field }}</p> 

當然,你應該有一個基本模板說的templates/base.html文件將是這樣的:

<html> 
    <head> 
     <title>{% block head_title %}{% endblock %} - your website</title> 
    </head> 
    <body> 
     {% block body %} 
     {% endblock %} 
    </body> 
</html> 

和你user_detail。HTML模板應該使用它,請參閱template inheritance

{% extends 'templates/base.html' %} 

{% block head_title %}Details of {{ object.username }}{% endblock %} 

{% block body %} 
<h1>This is the page of {{ object.username }}</h1> 

<p>Additional info: {{ object.get_profile.your_extra_field }}</p> 
{% endblock %} 

當你是新來的Django,我強烈建議你安裝admindoc提供基於你的項目自動生成的文檔。

+0

謝謝jpic。我明天會試一試。 – John 2012-03-27 17:49:29

相關問題