django表单的应用

简介:
在看文档的时候一直觉得django的表单设计是很酷的东西,今天花了点时间研究一下,掌握的还不多,不过已经能实现不少的东西,当然是在编写极少代码的情况下。不然研究它的表单就没有意义了。

我目前使用的Django版本是1.1 beta.所以是继承于forms来实现的表单系统
 from django import forms

第一步:首先在models.py中定义一个表单模型

class RemarkForm(forms.Form):
        subject = forms.CharField(max_length=100 ,label= '留言标题')
        mail = forms.EmailField(label= '电子邮件')
        topic = forms.ChoiceField(choices=TOPIC_CHOICES,label= '选择评分')  
        message = forms.CharField(label= '留言内容',widget=forms.Textarea)
        cc_myself = forms.BooleanField(required= False ,label= '订阅该贴')

那个topic中的choices需要在models.py中定义一个数组.
TOPIC_CHOICES = (
        ('leve1', '差评'),
        ('leve2', '中评'),
        ('leve3', '好评'),
)

这样,之后在html显示的表单就采用这个模型的数据了。

另外还有一种定义表单模型的方式,那就是直接继承另一个models。如果我们在models里设计数据库时,已经设计好了一个类(就是数据库的表)之后想复用这个类的信息来作为表单的模型,那么很简单,同样是在models中的一个类
class Advertisement(models.Model): 
  #订单编号
  OrderID    =     models.ForeignKey(OrderInfo)
  #//广告标题#
  Title    =    models.CharField(max_length = 36) 
  #//广告内容#
  Content    =    models.CharField(max_length = 600)
注意,他的类型是models.Model,是做数据库ORM用的。

然后怎么关联呢?
需要导入一个新的类 (ModelForm)
from django.forms import ModelForm

class ContactForm(ModelForm):
   class Meta:
    model = Advertisement
    fields = ( 'Title', 'CustomerID')

这里的Advertisement就是之前那个ORM的模型。


第二步:OK,继续我们的表单,下一步需要做什么呢?开始在views.py里写对表单的调用吧.
def remark(request):


         if request.method ==  'POST': # 如果表单被提交
                form = ContactForm(request.POST) # 获取Post表单数据
                 if form.is_valid(): # 验证表单
                        return HttpResponseRedirect( '/') # 跳转
         else:
                form = ContactForm() #获得表单对象
                
        return render_to_response( 'message.html', {
                 'form': form,
        })

整个代码很简单,我就不过多的解释了。


第三步:我们知道django里任何访问都是通过urls.py来管理的。所以下面我们需要配置一个路径。

  (r '^message', 'iring.views.remark'),

第四步:最后应该是建立一个模板的时候了,因为我们最终是输出到html上的.注意views的remark函数最后一行
        return render_to_response( 'message.html', {
                 'form': form,
        })

就是讲当前的表单对象输出到message.html里,自动生成一个表单。
所以,先构建一个html.
这个html模板很简单,除去不必要的CSS,我只给出核心部分好啦。
   < form  action ="/message/"  method ="POST" >
    {% for field in form %}
       < div  class ="fieldWrapper" >
         ` field`.`label_tag `:` field ` 
         ` field`.`errors `
       </div>
    {% endfor %}
     < div  class ="fieldWrapper" > < p > < input  type ="submit"  value ="留言"  /> </p> </div>
   </form>

{% for field in form %}

{% endfor %}
用于对表单对象里的元素进行遍历,然后通过
` field`.`label_tag `
` field ` 
` field`.`errors `
这三个标签来输出,注意` field`.`errors `默认情况下是不会输出的,只有当验证表单正确性时才会输出内容。

最终我们通过
http://youdjangourl/message来访问这个例子









本文转自阿汐 51CTO博客,原文链接:http://blog.51cto.com/axiii/197004,如需转载请自行联系原作者

相关文章
|
前端开发 JavaScript UED
探索Python Django中的WebSocket集成:为前后端分离应用添加实时通信功能
通过在Django项目中集成Channels和WebSocket,我们能够为前后端分离的应用添加实时通信功能,实现诸如在线聊天、实时数据更新等交互式场景。这不仅增强了应用的功能性,也提升了用户体验。随着实时Web应用的日益普及,掌握Django Channels和WebSocket的集成将为开发者开启新的可能性,推动Web应用的发展迈向更高层次的实时性和交互性。
302 1
|
IDE 关系型数据库 MySQL
Django学习一:创建Django框架,介绍Django的项目结构和开发逻辑。创建应用,编写主包和应用中的helloworld
这篇文章是关于如何创建一个Django框架,介绍Django的项目结构和开发逻辑,并指导如何创建应用和编写“Hello, World!”程序的教程。
759 3
Django学习一:创建Django框架,介绍Django的项目结构和开发逻辑。创建应用,编写主包和应用中的helloworld
|
监控 应用服务中间件 网络安全
部署Django应用:使用Gunicorn和Nginx构建高效的生产环境
部署Django应用:使用Gunicorn和Nginx构建高效的生产环境
879 0
|
存储 开发框架 JSON
【查漏补缺】Django模型字段类型及其应用
【查漏补缺】Django模型字段类型及其应用
158 0
|
存储 安全 UED
GitHub OAuth认证的Django应用
GitHub OAuth认证的Django应用
167 0
|
数据采集 Python
Django 表单
【8月更文挑战第24天】
103 3
|
JSON 前端开发 API
Django 后端架构开发:通用表单视图、组件对接、验证机制和组件开发
Django 后端架构开发:通用表单视图、组件对接、验证机制和组件开发
224 2
|
Python
Django表单组件
【8月更文挑战第20天】
115 1
|
前端开发 JavaScript 数据处理
Django的表单处理
【8月更文挑战第16天】
103 2
|
前端开发 JavaScript API
探索Python Django中的WebSocket集成:为前后端分离应用添加实时通信功能
【7月更文挑战第17天】现代Web开发趋势中,前后端分离配合WebSocket满足实时通信需求。Django Channels扩展了Django,支持WebSocket连接和异步功能。通过安装Channels、配置设置、定义路由和消费者,能在Django中实现WebSocket交互。前端使用WebSocket API连接后端,实现双向数据流,如在线聊天功能。集成Channels提升Web应用的实时性和用户体验,适应实时交互场景的需求。**
574 6