newforms 太好用了

建一个项目 newformstutorials ,建一个 app blog ,在 blog 的 models 中定义个:
class Article(models.Model):
title = models.CharField(u'标题', maxlength=255)
author = models.CharField(u'作者', maxlength=20)
hits = models.IntegerField(u'点击数', default=0, editable=False)
content = models.TextField(u'内容')

配置好数据库,把 newformstutorials.blog 加到 INSTALLED_APPS,manage.py syncdb,然后 manage.py shell ,然后:
In [1]: import django.newforms as forms

In [2]: from newformstutorials.blog.models import Article

In [3]: ArticleForm = forms.form_for_model(Article)

In [4]: form = ArticleForm()

In [5]: print unicode(form)
标题:
作者:"text" name="author" maxlength="20" />
内容:rows="10" cols="40" name="content">

In [6]: print form.as_ul()
标题:
作者: "author" maxlength="20" />
内容: ls="40" name="content">

一个空白的 form 就这样出来了,这就是个添加文章的表单,让我们用这个表单来加点数据吧:
In [7]: form = ArticleForm({'title':'some title','author':'huangyi'})

In [8]: form.is_valid()
Out[8]: False

In [9]: form.errors
Out[9]: {'content': [u'This field is required.']}

In [10]: form = ArticleForm({'title':'some title','author':'huangyi', 'content':
'some contents...'})

In [11]: form.is_valid()
Out[11]: True

In [12]: article = form.save(commit=True)

OK,数据就这样保存了,我们再来试试数据更新的页面吧:
In [13]: ChangeForm = forms.form_for_instance(article)

In [14]: form = ChangeForm()

In [15]: print unicode(form)
标题:
作者:"text" name="author" value="huangyi" maxlength="20" />
内容:rows="10" cols="40" name="content">some contents...

In [16]: form = ChangeForm({'title':'another title', 'author':'huangyi', 'conten
t':'other contents...'})
In [17]: form.is_valid()
Out[17]: True

In [18]: form.save()
Out[18]: <article: article="" object="">

In [19]: article = Article.objects.get(id=article.id)

In [20]: article.title
Out[20]: 'another title'
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值