Django无法在表中打开数据库

时间:2014-01-28 18:50:53

标签: python django sqlite templates datatable

Django的。我尝试在数据表中打印userdata。查询成功但我看不到任何数据。我知道o.k中的数据库。我用sqlite。仅打印“查询成功”

代码:

views.py

@login_required
def user_profile(request):
  user = models.ForeignKey(User, unique=True)

  args = {}
  args.update(csrf(request))

  args['form'] = UserProfileForm()
  args['my_data_dictionary'] = request.session['my_data_dictionary'] 


  try:
      profile = User.objects.get(pk=request.user.id)
      args['profile'] = profile
      args['query_result'] = "The query was successful"

  except :
      args['query_result'] = "The query failed"

  return render_to_response('user_profile.html',args,context_instance=RequestContext(request)) 

user_profile.html

  {% extends "base.html" %}

  {% block content %}

  {{ query_result }}

 <table>

    {% for item in profile.all %}
    <tr> 
        <td>{{ item }}</td>
    </tr>
    {% endfor %}

 </table>

   {% endblock %}

3 个答案:

答案 0 :(得分:2)

问题在于这两行

profile = User.objects.get(pk=request.user.id)

{% for item in profile.all %}

第一个将只返回一个User对象。此对象没有all属性,因此第二个{% for %}将不会被执行!而不是{% for %}尝试{{ profile }}

更新

首先,我真的不知道这行是什么

user = models.ForeignKey(User, unique=True)

一样。请从那里删除它!现在,我认为User是正常django.contrib.auth.models.User。如果是,那么您可以在模板中执行以下操作:

The user {{ profile.username }} has the following name: {{ profile.first_name }} {{  profile.last_name }} 

等等 - 查看文档以查看User的所有字段:https://docs.djangoproject.com/en/dev/ref/contrib/auth/

答案 1 :(得分:0)

获取所有User个对象 使用方法:

profile = User.objects.all()
args['profile']= profile

和html

{% if profile %}
    {% for usr in profile %}
       {{ usr }}
    {% endfor %}
{% endif %}

答案 2 :(得分:0)

好像你错了代码

{% for item in profile.all %}
{% endfor %}

提供模板中模型字段的访问权限。

相反,要访问用户字段(数据,属性等),您需要在模板中使用以下内容:

<tr> 
    <td>{{ profile.<user attribute> }}</td>
    <td>{{ profile.username }}</td>
</tr>

请参阅:https://docs.djangoproject.com/en/dev/topics/templates/