我有一个页面列出了用户完成的问题(在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})
我需要知道两件事。
答案 0 :(得分:1)
首先,请使用render()而不是render_to_response()。这样可以避免常见问题。
如何在django中存储此附加用户特定信息
请参阅有关storing additional user information的文档。
如何在网页中显示它们
您可以使用通用DetailView:
在urls.py中导入DetailView ,即from django.views import generic
在urls.py中导入用户模型,即from django.contrib.auth.models import User
在urls.py中添加网址,即url(r'^/user/(?P<pk>\d+)/$', views.DetailView.as_view({'model': user, 'context_object_name': 'object'}))
在templates / auth / user_detail.html中创建模板
打开网址/用户/ 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,它会根据您的项目提供自动生成的文档。