2012-03-27 2 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}) 

мне нужно знать 2 вещи.

  1. Как сохранить эту дополнительную пользовательскую информацию в django.
  2. Как отображать их в веб-страницы

ответ

1

Во-первых, пожалуйста, используйте render() вместо render_to_response(). Это избавит вас от обычных ошибок.

Как хранить эту дополнительную пользователя конкретную информацию в Джанго

Смотрите документацию о 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. Создать шаблон, в шаблонах/авториз/user_detail.html

  5. Открыть URL/пользователь/1/, чтобы просмотреть отрисованный шаблон

Ваш шаблон может выглядеть следующим образом:

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

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

Конечно, вы должны иметь базовый шаблон сказать шаблоны/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

Смежные вопросы