2012-03-27 5 views
0

Ich habe eine Seite, die Fragen auflistet (in C-Programmierung :-)), die von Benutzern ausgefüllt werden. Sagen wir, es gibt 10 und jeder eingeloggte Benutzer hat Zugriff auf diese.korrekte Vorgehensweise zum Speichern und Anzeigen eines benutzerspezifischen Status

Seite angezeigt werden soll, etwa so:

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

Benutzer zu dieser Seite von views.py

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

Ich brauche 2 Dinge zu wissen.

  1. So speichern Sie diese zusätzlichen benutzerspezifischen Informationen in django.
  2. Wie sie

Antwort

1

Zuerst in Webseite anzuzeigen, benutzen Sie bitte render() statt render_to_response(). Dies wird Sie vor den üblichen Problemen bewahren.

Wie diese zusätzliche Benutzer in django spezifischen Informationen speichern

die Dokumentation über storing additional user information See.

Wie sie

in Webseite angezeigt werden können, verwenden Sie den generischen DetailView:

  1. Import Detailview in urls.py, dh from django.views import generic

  2. Import das Benutzermodell in urls.py, dh from django.contrib.auth.models import User

  3. für das eine URL hinzufügen in urls.py, dh url(r'^/user/(?P<pk>\d+)/$', views.DetailView.as_view({'model': user, 'context_object_name': 'object'}))

  4. die Vorlage erstellen, in templates/Auth/user_detail.html

  5. URL öffnen/user/1/, um die gerenderte Vorlage zu sehen

Ihre Vorlage kann wie folgt aussehen:

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

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

Natürlich sollten Sie eine Basisvorlage haben sagen templates/base.html, die wie folgt aussehen:

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

Und Ihre user_detail.HTML-Vorlage sollte es benutzen, siehe 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 %} 

Wie Sie zu Django neu sind, empfehle ich, dass Sie admindoc installieren, die auf der Grundlage Ihres Projekt automatisch generierte Dokumentation zur Verfügung stellt.

+0

danke jpic. Ich werde es morgen ausprobieren. – John

Verwandte Themen