108-使用表格,不依赖于后台而输入内容

Posted lzhshn

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了108-使用表格,不依赖于后台而输入内容相关的知识,希望对你有一定的参考价值。

1、前面我们记得,要在admin后台增加数据,需要使用models模块。现在不依赖于后台就能增加数据,则需要forms模块。

通过pycharm,在test_app下面增加一个forms.py。

from django import forms
from .models import CnbTitle


# 注意,如果我们只是想在网页上呈现一个表格,然后完成输入,根本不需要forms模块,直接在html里使用<form></form>即可
# 通过类名写法,大概就能知道这个form类是为CnbTitle服务的;
# 更简单点说:ModelForm就是链接模型和表格的(=model+form),django的语法非常平易近人,你看到一个词,大概就知道它干嘛
class CnbTitleForm(forms.ModelForm):
    # ModelForm内嵌了一个Meta类,这个类通过定义属性,建议模型和表格的关系,以及表格的一些式样
    class Meta:
        # 表示是哪个类
        model = CnbTitle
        # 表示表格将里将包含类的哪些属性,这里只包含text属性
        fields = [‘text‘]
        # 表示这个属性放在表格时,是否需要有标签
        labels = ‘text‘: ‘输入标题‘

  通过注释可以看的很清楚,继续补充几点:

(1)表格的定义也是用类的形式

(2)简单地将表格的各行内容和类的各项属性连接起来即可,完成这个工作用ModelForm即可。

 

2、用试图呈现这个表格

现在我们暂不考虑更多其他内容,先简单呈现即可。

由于forms.py已经添好了,我们首先将forms.py里的类引入到views函数中,假设这个函数是form_test;

然后按照惯例,配置url,使其指向form_test;

最后建立一个test_from.html,可以为空,等函数编好后再去想html怎么写。

首先看views函数:

from django.shortcuts import render
from django.shortcuts import HttpResponse
from .models import CnbTitle
from .forms import CnbTitleForm


# 简单地呈现一个表格
def test_form(request):
    form = CnbTitleForm
    context = ‘form‘: form
    return render(request, ‘test_form.html‘, context)

 可以看见这个函数非常简单:将引入的表格类赋值给一个变量,然后将变量包装为字典,然后传值到指定页面即可。

 

3、编写模板页面,使表格最终被呈现出来

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Test Form</title>
</head>
<body>
    <p>一个简单的表格:</p>
    <form action="" method="">
        % csrf_token %
        form.as_p
        <button name="submit">提交</button>
    </form>
</body>
</html>

 

4、最终我们可以看到

技术图片

 

以上是关于108-使用表格,不依赖于后台而输入内容的主要内容,如果未能解决你的问题,请参考以下文章

Excel如何实现输入时在后面添加而不替换单元格中的内容?

在后台刷新 vb6 表单而不会丢失用户输入的数据

查询表格——建立动态表格,使用ajax输入查询条件将后台数据查询出来以表格的形式展示出来

java代码修改网页内容(不改变后台内容)

过滤两个有串扰的表

Android控件状态依赖