表单视图:定义表达类、修改模型类、开发模板文件、开发视图

一、定义表达类

  建立表单类文件djangosite/app/forms.py,我们定义一个表单类MomentForm类:

 1 from django.forms import ModelForm
 2 from app.models import Moment
 3 
 4 
 5 class MomentForm(ModelForm):
 6     """
 7     django.forms.ModelForm是Django表单的基类
 8     Moment是我们定义的模型,以便后面的表单类关联Moment类
 9     子类Meta是一个常规操作,在Meta中声明与本表单关联的模型类及其字段
10     fields字段可以是__all__,也可以用列表形式声明要导入的属性,如:fields = ('kind', 'content')或['kind', 'content']
11     """
12     class Meta:
13         model = Moment
14         fields = '__all__'

 

二、修改模型类

  为了用户能够以单选的方式设置消息类型,需要在models.py文件中定义枚举值,并与模型类Moment关联。

  进入:djangosite/app/models.py 修改:

# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models

KIND_CHOICES = (
    ("python技术", "python技术"),
    ("数据库技术", "数据库技术"),
    ("经济学", "经济学"),
    ("文体资料", "文体资料"),
    ("个人心情", "个人心情"),
    ("其他", "其他"),
)


# Create your models here.
class Moment(models.Model):
    content = models.CharField(max_length=300)
    user_name = models.CharField(max_length=20, default='匿名')
    # 修改kind定义,加入choices参数
    kind = models.CharField(max_length=20,
                            choices=KIND_CHOICES,
                            default=KIND_CHOICES[0])

  保存对模型的修改:

  

 

三、开发模板文件

  建立目录:djangosite/app/templates

  在该目录下新建模板:moments_input.html

  这里需要一些超文本标签语言的基础,如果你水平很高,也可以自己写一个更好的文本

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>消息录入界面</title>
 6 </head>
 7 <body>
 8     <form action="?" method="post">
 9         <fieldset>
10             <legend>请输入并提交</legend>
11             {{ form.as_p }}
12             <input type="submit" value="提交" />
13         </fieldset>
14     </form>
15 </body>
16 </html>

  其中的模板内容用大括号标识。本例用{{form.as_p}}定义表单类MomentForm的输入字段。

 

四、开发视图

  下面开发视图函数,使得表单和页面模板衔接起来。进入djangosite/app/views.py文件,加入下面的代码:

  

 

posted @ 2018-06-07 16:36  巴蜀秀才  阅读(154)  评论(0)    收藏  举报