2018.12.20DANG,CLASS274 form,models,formmodels的作用

model.py的作用就是操作***数据库 ***

django设置数据库,不需要学习其他额外的语言,它的ORM系统,就能帮助你设计数据库,而工作流程就是在你的app下面,设置好Model.py
将ORM模型映射到数据库中,总结起来就是以下几步:

  1. 在settings.py中,配置好DATABASES,做好数据库相关的配置。
  2. 在app中的models.py中定义好模型,这个模型必须继承自django.db.models。
  3. 将这个app添加到settings.py的INSTALLED_APP中。
  4. 在命令行终端,进入到项目所在的路径,然后执行命令python manage.py makemigrations来生成迁移脚本文件。
  5. 同样在命令行中,执行命令python manage.py migrate来将迁移脚本文件映射到数据库中。
from django.db import models
class Book(models.Model):
    name = models.CharField(max_length=20,null=False)
    author = models.CharField(max_length=20,null=False)
    pub_time = models.DateTimeField(default=datetime.now)
    price = models.FloatField(default=0)

form.py的作用是作为数据验证是否合法,一般会配合views的cleaned_data使用

Django中的表单丰富了传统的HTML语言中的表单。在Django中的表单,主要做以下两件事:

  1. 渲染表单模板。
    2. 表单验证数据是否合法。
    比如你传回的数字是不是传回成了符号,如果你定义的是密码,那么form就会自定义为哈希码,从而保密。

文章内容的验证

# forms.py
class MessageBoardForm(forms.Form):
    title = forms.CharField(max_length=3,label='标题',min_length=2,error_messages={"min_length":'标题字符段不符合要求!'})
    content = forms.CharField(widget=forms.Textarea,label='内容')
    email = forms.EmailField(label='邮箱')
    reply = forms.BooleanField(required=False,label='回复')

# views.py
class IndexView(View):
    def get(self,request):
        form = MessageBoardForm()
        return render(request,'index.html',{'form':form})

    def post(self,request):
        form = MessageBoardForm(request.POST)
        if form.is_valid():
            title = form.cleaned_data.get('title')
            content = form.cleaned_data.get('content')
            email = form.cleaned_data.get('email')
            reply = form.cleaned_data.get('reply')
            return HttpResponse('success')
        else:
            print(form.errors)
            return HttpResponse('fail')

modelform的作用主要是简化了model和form

比如,你定义了一个model.py里面有了一个叫做Article的属性,当你在form里面再重新定义一次的时候,你会发现其实填写的内容会一样(参考上面的那段代码),而from.ModelFrom则可以直接继承,不用再重新写一次form的重复属性

这里是数据库操作
#model.py
rom django.db import models
from django.core import validators
class Article(models.Model):
    title = models.CharField(max_length=10,validators=[validators.MinLengthValidator(limit_value=3)])
    content = models.TextField()
    author = models.CharField(max_length=100)
    category = models.CharField(max_length=100)
    create_time = models.DateTimeField(auto_now_add=True)
这里是表单
#form.py
from django import forms
class MyForm(forms.ModelForm):
    class Meta:
        model = Article
        fields = ['title','content']

最后只要在views.py里面进行验证就好了。

# views.py
class IndexView(View):
    def get(self,request):
        form = MessageBoardForm()
        return render(request,'index.html',{'form':form})

    def post(self,request):
        form = MessageBoardForm(request.POST)
        if form.is_valid():
            title = form.cleaned_data.get('title')
            content = form.cleaned_data.get('content')
            email = form.cleaned_data.get('email')
            reply = form.cleaned_data.get('reply')
            return HttpResponse('success')
        else:
            print(form.errors)
            return HttpResponse('fail')
```
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值