правильный подход для хранения и отображения состояния, характерного для пользователей - PullRequest
0 голосов
/ 27 марта 2012

У меня есть страница, на которой перечислены вопросы (в программировании на 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 Ответ

1 голос
/ 27 марта 2012

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

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

См. Документацию о хранении дополнительной информации о пользователе .

Как отобразить их на веб-странице

Вы можете использовать универсальный 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. Создать шаблон , в templates / auth / user_detail.html

  5. Откройте URL / 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 наследование :

{% 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 , который предоставляет автоматически сгенерированную документацию на основе вашего проекта.

...