如何使用django将字段数据渲染到模板文件中?

时间:2013-03-06 21:29:12

标签: python xml django

我正在尝试使用以下代码将数据呈现到模板文件中。我遇到的错误是:

This page contains the following errors:
error on line 13 at column 16: AttValue: " or ' expected

Below is a rendering of the page up to the first error.
Name,Author,Status

代码

def editbook(request):
    if request.method == 'GET':
        name = request.GET.get('name',False)
        Details = bookInfo.objects.all().filter(Name=name)
        id = Details.values_list('id',flat=True)
        Name = Details.values_list('Name',flat=True)
        Author = Details.values_list('Author',flat=True)
        Status = Details.values_list('Status',flat=True)
        return render(request, 'app/add.html', {'Name' : Name, 'Author' : Author, 'Status' : Status}, content_type="application/xhtml+xml")

模板代码

<html>
<head>
    <title>Add</title>
</head>
<body>
    <form action="add/" method="post">
        {% csrf_token %}
        <p style="font-family:Courier New;color:teal">Name <input type="text" placeholder="Name of the book" name="name"></input></p>

        <p style="font-family:Courier New;color:teal">Author <input type="text" placeholder="Author of the book" name="author"></input></p>
        <p style="font-family:Courier New; color:teal"> Status
        <select name="status">
                <option value=1>Read</option>
                <option value=1>Unread</option>
        </select>
        </p>
        <input type="submit" id="booksubmit" value="Add/Edit Book"></input>
</form>
</body>
</html>

我在谷歌搜索过,我发现这有点像XML解析错误(如果我错了请纠正我)。现在我被困在这个位置。请帮忙。

编辑此处添加图书的表单有不同的方法将字段数据保存到数据库中。

2 个答案:

答案 0 :(得分:2)

您的HTML格式不正确,无论是什么类型,html和html5。

要挑剔,你的python代码也应该重构。

通常我们用小写字母而不是大写来定义变量,所以

变量Details, Name, Author, Status应为details, name, author, status。 此外,您的班级名称bookInfo拼写是这样的吗? python中的类应以大写字母开头,因此bookInfo应为BookInfo

正确的HTML5是:

<html>
<head>
    <title>Add</title>
</head>
    <body>
        <form action="add/" method="post">
        {% csrf_token %}
        <p style="font-family:Courier New;color:teal;">Name <input type="text" placeholder="Name of the book" name="name" /></p>

        <p style="font-family:Courier New;color:teal;">Author <input type="text" placeholder="Author of the book" name="author" /></p>
        <p style="font-family:Courier New; color:teal;"> Status
            <select name="status">
                <option value=1>Read</option>
                <option value=1>Unread</option>
            </select>
            </p>
            <input type="submit" id="booksubmit" value="Add/Edit Book" />
        </form>
    </body>
</html>

如果您没有使用HTML5,那取决于您定义的Doctype。 您不能在输入字段中使用占位符。

输入需要使用/>关闭,而不是</input>

您在html中提供的内联样式不完整:

style="font-family:Courier New; color:teal"

应该是

style="font-family:Courier New; color:teal;"

你正在使用的回报不需要content_type你可以放弃它。 你没有在任何地方使用你的模板变量,所以不是它,但如果你想开始使用它们,模板语言的语法是{{variable_name}},在你的情况下是(直到你重构) 例如{{ Name }}, {{ Status }}

此外,由于content_type因为您正在主动告诉浏览器将文档解析为xhtml+xml,并且该XHTML包含规则,您实际上正在破解,因此您会看到此错误。< / p>

要将Django应用程序的值添加到输入字段,请执行此操作(不使用Django表单)

<input type="text" value="{{ Name }}" />

但我建议改用Django Form。

答案 1 :(得分:0)

我认为你得到了这个错误,因为你的模板不是'格式良好'。我的猜测是输出的xml中存在错误。

您已将http响应的内容类型声明为application/xhtml+xml。 xhtml要求您在所有属性周围加上引号。您可能在某处丢失/添加引号。我无法从您的模板中看到它的位置。

检查您的模板变量({{ Name }}{{ Author }}{{ Status }})输出的内容,以查看它们是否添加了迷路引号,或尝试更改内容类型(也许只是删除你传递给render函数的content_type参数。