表单视图:定义表达类、修改模型类、开发模板文件、开发视图
一、定义表达类
建立表单类文件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文件,加入下面的代码:
清澈的爱,只为中国