• 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函数中,假设这个函数是test_form;

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

    最后建立一个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、最终我们可以看到

  • 相关阅读:
    python学习笔记(三):numpy基础
    python学习笔记(二):基础知识点
    python学习笔记(一):基础知识点
    SQL学习笔记:分块提取查询结果
    SQL学习笔记:函数
    SQL学习笔记:高级教程
    SQL学习笔记:基础教程
    R语言学习笔记(二十一五):如何如何提升R语言运算的性能以及速度
    R语言学习笔记(二十四):plyr包的用法
    Rsyslog的三种传输协议简要介绍
  • 原文地址:https://www.cnblogs.com/lzhshn/p/11380219.html
Copyright © 2020-2023  润新知