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-使用表格,不依赖于后台而输入内容的主要内容,如果未能解决你的问题,请参考以下文章