DetailView 不显示数据
DetailView not showing data
我正在尝试显示 ListView
个项目,单击这些项目会打开该项目的相应 DetailView
。在 Django 中这是一件非常简单的事情,但我 运行 遇到了一些麻烦。
我已经成功创建了一个ListView
,但是我无法让DetailView
显示每个项目的信息。
我正在构建一个密码保险箱。 ListView
列出所有保存的密码,DetailView
是每个密码的view/edit页。是的,我意识到实际上将密码安全地放在互联网上是一个糟糕的主意,它只是一个测试项目:)
我的PasswordSafe
class:
class PasswordSafe(models.Model):
user = models.OneToOneField(User)
pwWebsite = models.CharField(max_length=30)
pwUsername = models.CharField(max_length=30)
pwEmail = models.CharField(max_length=30)
pwPassword = models.CharField(max_length=30)
def __unicode__(self): # __unicode__ on Python 2, __str__ on Python 3
return self.pwWebsite
User.passwordSafe = property(lambda u: PasswordSafe.objects.get_or_create(user=u)[0])
我的urls.py
:
from django.conf.urls import patterns, include, url
from django.views.generic import ListView, DetailView
from models import PasswordSafe
urlpatterns = [
url(r'^passwordSafe/$', ListView.as_view(queryset=PasswordSafe.objects.all().order_by('-pwWebsite')[:10], template_name = 'userprofile/passwordSafe_list.html')),
url(r'^passwordSafe/(?P<pk>\d+)/$', DetailView.as_view(model=PasswordSafe, template_name='userprofile/passwordSafe.html')),
]
我在我的 ListView
模板 (passwordSafe_list.html
) 中成功使用了以下代码:
{% for passwordSafe in object_list %}
<h2><a href="/accounts/passwordSafe/{{passwordSafe.id}}">{{ passwordSafe.pwWebsite }}</a></h2>
{% endfor %}
但是,当我尝试在 Detailview
(passwordSafe.html
模板)中使用 passwordSafe 数据时,没有显示任何内容。我使用以下代码尝试更改标题:
<title>{% block title %} | Edit {{ passwordSafe.pwWebsite }} Password{% endblock %}</title>
这应该显示类似 "Password Safe | Edit Google Password" 的标题,但 passwordSafe.pwWebsite
returns 什么也没有。我在尝试从此模板引用 passwordSafe 时做错了什么吗?我知道我没有像 ListView
那样通过查询集,但我不确定这是否是问题的一部分。
在DetailView
中,Django uses the model name in lowercase, by default,如果你还没有设置context_object_name
。
{{ passwordsafe.pwWebsite }}
我正在尝试显示 ListView
个项目,单击这些项目会打开该项目的相应 DetailView
。在 Django 中这是一件非常简单的事情,但我 运行 遇到了一些麻烦。
我已经成功创建了一个ListView
,但是我无法让DetailView
显示每个项目的信息。
我正在构建一个密码保险箱。 ListView
列出所有保存的密码,DetailView
是每个密码的view/edit页。是的,我意识到实际上将密码安全地放在互联网上是一个糟糕的主意,它只是一个测试项目:)
我的PasswordSafe
class:
class PasswordSafe(models.Model):
user = models.OneToOneField(User)
pwWebsite = models.CharField(max_length=30)
pwUsername = models.CharField(max_length=30)
pwEmail = models.CharField(max_length=30)
pwPassword = models.CharField(max_length=30)
def __unicode__(self): # __unicode__ on Python 2, __str__ on Python 3
return self.pwWebsite
User.passwordSafe = property(lambda u: PasswordSafe.objects.get_or_create(user=u)[0])
我的urls.py
:
from django.conf.urls import patterns, include, url
from django.views.generic import ListView, DetailView
from models import PasswordSafe
urlpatterns = [
url(r'^passwordSafe/$', ListView.as_view(queryset=PasswordSafe.objects.all().order_by('-pwWebsite')[:10], template_name = 'userprofile/passwordSafe_list.html')),
url(r'^passwordSafe/(?P<pk>\d+)/$', DetailView.as_view(model=PasswordSafe, template_name='userprofile/passwordSafe.html')),
]
我在我的 ListView
模板 (passwordSafe_list.html
) 中成功使用了以下代码:
{% for passwordSafe in object_list %}
<h2><a href="/accounts/passwordSafe/{{passwordSafe.id}}">{{ passwordSafe.pwWebsite }}</a></h2>
{% endfor %}
但是,当我尝试在 Detailview
(passwordSafe.html
模板)中使用 passwordSafe 数据时,没有显示任何内容。我使用以下代码尝试更改标题:
<title>{% block title %} | Edit {{ passwordSafe.pwWebsite }} Password{% endblock %}</title>
这应该显示类似 "Password Safe | Edit Google Password" 的标题,但 passwordSafe.pwWebsite
returns 什么也没有。我在尝试从此模板引用 passwordSafe 时做错了什么吗?我知道我没有像 ListView
那样通过查询集,但我不确定这是否是问题的一部分。
在DetailView
中,Django uses the model name in lowercase, by default,如果你还没有设置context_object_name
。
{{ passwordsafe.pwWebsite }}