2012-03-27 20 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> 

ユーザーは、私は2つのことを知っておく必要がありviews.py

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

からこのページに転送されます。

  1. この追加のユーザー固有情報をdjangoに保存する方法。

答えて

1

まずWebページでそれらを表示するにはどのよう

  • render()ではなく、render_to_response()を使用してください。これにより、一般的な問題からあなたを救うことができます。

    ジャンゴで、この追加のユーザ固有の情報を格納するための方法

    storing additional user informationについてのドキュメントを参照してください。

    1. urls.pyでインポートDetailView、すなわちfrom django.views import generic

    2. インポート:あなたは、一般的なDetailViewを使用することができますどのようにWebページ

      でそれらを表示するために

      urls.pyのUserモデル、すなわちfrom django.contrib.auth.models import User

    3. はurls.pyにそのためのURLを追加、すなわちurl(r'^/user/(?P<pk>\d+)/$', views.DetailView.as_view({'model': user, 'context_object_name': 'object'}))

    4. テンプレートを作成し、テンプレートで/ AUTH/user_detail.html

    5. urlを開きます/ user/1/レンダリングされたテンプレートを表示する

    あなたのテンプレートは次のようになります。

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

    そして、あなたのuser_detail:もちろん

    <h1>This is the page of {{ object.username }}</h1> 
    
    <p>Additional info: {{ object.get_profile.your_extra_field }}</p> 
    

    を、あなたは基本テンプレートを持っている必要がありますが、このようになりますテンプレート/ base.htmlを言います。

    {% 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 %} 
    

    あなたはジャンゴに新しいしているとして、私は非常にあなたのプロジェクトに基づいて自動生成されたドキュメントを提供admindocをインストールすることをお勧め:HTMLテンプレートはtemplate inheritanceを参照してください、それを使用する必要があります。

  • +0

    ありがとうございます。私は明日それを試してみるよ。 – John

    関連する問題