0

我已经在 Django 中准备了一个基本的联系表。数据保存成功。但我想将保存的数据(所有 db 列)检索为 html 表并将其显示在我的网站上(而不是在管理界面中)。

这是模型:

class ContactForm(forms.Form):
    name = forms.CharField(label='Your name')
    place = forms.CharField(max_length=100,label='Your place')
    message = forms.CharField(label='Your message')
    url = forms.URLField(label='Your Web site', required=False)
    options = forms.BooleanField(required=False)
    day = forms.DateField(initial=datetime.date.today)

该视图仅接受发布数据并重定向到“感谢”页面。

我试着做ContactForm.objects.all(),但我得到的错误是:Objects attribute does not exist for ContactForm

4

2 回答 2

2

听起来您需要创建一个模型。django 模型描述了一个数据库表并创建了使用 python 处理该表的功能。如果您想保存数据,那么您将希望将其保存在数据库中,并且您将需要一个模型。

尝试类似的东西 -

from django.db import models

class Contact(models.Model):
    name = models.CharField(label='Your name', max_length=128)
    place = models.CharField(max_length=100,label='Your place')
    message = models.CharField(label='Your message', max_length=128)
    url = models.URLField(label='Your Web site', required=False)
    options = models.BooleanField(required=False)
    day = models.DateField(initial=datetime.date.today)

然后,不要创建一个继承自Form您想要继承的表单ModelForm(有关模型表单的更多信息,请参阅文档)。它应该很简单,因为模型上已经描述了你所有的字段 -

from django.forms import ModelForm

class ContactForm(ModelForm):
    class Meta:
        model = Contact

您需要一个可以处理保存表单的视图(这里是文档中的一个示例)。然后,您就可以Contact.objects.all()按照 Cathy 的答案中的示例进行显示。或者,查看Django-Tables2 - 一个用于显示表格的有用插件。

于 2013-02-06T07:56:47.737 回答
0

视图.py

def view_name (request):
    contacts = Contact.objects.all()
    return render(request, 'page.html', {
        'contacts': contacts
    })

html

<html>
    ....

    <body>
        <table>
        {% for contact in contacts %}
            <tr>
                <td>{{contact.name}}</td>
                <td>{{contact.place}}</td>
                <td>....</td>
                <td>....</td>
            </tr>
        {% endfor %}
        </table>
    </body>
</html>
于 2013-02-06T07:58:48.273 回答