我是django新手,想将Singly整合到django民意调查应用程序中。我使用了基于类的视图,允许单一应用程序中的模型与Polls模型一起传递。
问题是,即使数据库中存在数据,我也无法从Singly模型获取数据。
现在我只想显示用户个人资料的access_token和个人资料ID。
这是我的Views.py代码:(只有相关视图)
class IndexView(ListView):
context_object_name='latest_poll_list'
queryset=Poll.objects.filter(pub_date__lte=timezone.now) \
.order_by('-pub_date')[:5]
template_name='polls/index.html'
def get_context_data(self, **kwargs):
context = super(IndexView, self).get_context_data(**kwargs)
context['user_profile'] = UserProfile.objects.all()
return context
这是我的urls.py:
urlpatterns = patterns('',
url(r'^$',
IndexView.as_view(),
name='index'),
url(r'^(?P<pk>\d+)/$',
DetailView.as_view(
queryset=Poll.objects.filter(pub_date__lte=timezone.now),
model=Poll,
template_name='polls/details.html'),
name='detail'),
url(r'^(?P<pk>\d+)/results/$',
DetailView.as_view(
queryset=Poll.objects.filter(pub_date__lte=timezone.now),
model=Poll,
template_name='polls/results.html'),
name='results'),
url(r'^(?P<poll_id>\d+)/vote/$', 'polls.views.vote', name='vote'),
)
这是我的index.html:
{% load staticfiles %}
<h1>Polls Application</h1>
<h2>Profile Info:</h2>
<div id="access-token-wrapper">
<p>Here's your access token for making API calls directly: <input type="text" id="access-token" value="{{ user_profile.access_token }}" /></p>
<p>Profiles: <input type="text" id="access-token" value="{{ user_profile.profiles }}" /></p>
</div>
<link rel="stylesheet" type="text/css" href="{% static 'polls/style.css' %}" />
{% if latest_poll_list %}
<ul>
{% for poll in latest_poll_list %}
<li><a href="{% url 'polls:detail' poll.id %}">{{ poll.question }}</a></li>
{% endfor %}
</ul>
{% else %}
<p>No polls are available.</p>
{% endif %}
它能够正确获取民意调查,但它不会在任何文本框中打印任何内容,即user_profile.access_token和user_profile.profiles。
我认为问题是模板的渲染不正确。它应该传递上下文'user_profile'但不是。或者由于某种原因它没有从数据库中获取数据,因为UserProfile数据库中有一个条目。
我很感激你的帮助,人们。
答案 0 :(得分:0)
user_profile
上下文变量包含UserProfile对象的列表。来自代码:
context['user_profile'] = UserProfile.objects.all() # will return a QuerySet, that behaves as list
在模板中,它就像是单个对象一样被访问:
{{ user_profile.access_token }}
{{ user_profile.profiles }}
因此要么在视图中为此变量添加一个UserProfile对象。例如:
if self.request.user.is_authenticated()
context['user_profile'] = UserProfile.objects.get(user=self.request.user)
else:
# Do something for unregistered user
在模板中迭代配置文件:
{% for up in user_profile %}
{{ up.access_token }}
{% endfor %}
在模板中按索引访问个人资料:
{{ user_profile.0.access_token }}