zoukankan      html  css  js  c++  java
  • Django 中form的用法

    form的主要作用:1.在html中生成表单框架,2.验证数据(实话实说,很简洁,但不实用,灵活性差)

    from django.db import models
    
    # Create your models here.
    
    class UserInfo(models.Model):
        name = models.CharField(max_length=32,verbose_name='用户名')
        email = models.EmailField(max_length=32,verbose_name='邮箱',default='123@live.com')
        pwd = models.CharField(max_length=32,verbose_name='密码',default='123')
        ut = models.ForeignKey(to='UserType',default=1,verbose_name='用户类型',on_delete=models.CASCADE)
        def __str__(self):
            return self.name
    
    class Role(models.Model):
        title = models.CharField(max_length=32,verbose_name='用户角色')
        users = models.ForeignKey(to='UserInfo',verbose_name='用户职位',on_delete=models.CASCADE)
    
        def __str__(self):
            return self.title
    
    
    class UserType(models.Model):
        title = models.CharField(max_length=32,verbose_name='用户类型')
    
        def __str__(self):
            return self.title

    2. 在model目录下新建forms.py

    有两种写法:
    a. 定义表单模型
    from django import  forms
    class UserInfoForm(forms.Form):
        ame = forms.CharField(max_length=100, label='用户名')
        email = forms.EmailField(label='电子邮件')
        pwd = forms.CharField(label='密码', widget=forms.Textarea)

    b. 继承model

    from django.forms import ModelForm
    from myblog.users.models import Users
    
    class TestModeForm(ModelForm):
        class Meta:
            model = UserInfo
            fields = "__all__"    # 或者fields = ('name','pwd','email')
    3.在view视图中 ,做表单验证
    def contact(request):
        if request.method == 'POST':
            form = ContactForm(request.POST)
            if form.is_valid():
                username = form.cleaned_data['uname']
                pwd = form.cleaned_data['pwd']
                email = form.cleaned_data['email']return HttpResponseRedirect('/index/')
        else:
            return render_to_response('contact.html', {'form': form, })

    4. 在html页面,代码超简单,这点django做的不错

    <form id="your-profile" action="/contact" method="post">
        <table class="form-table">
            <!--{{ form.as_ul }}-->                            # 这是第一种写法,在
            <ul> 显示表单
                <!-- {{ form.as_p }}-->                            # 这是第二种写法,在<p> 显示表单
                    <!--{{ form.as_table }}-->                     # 这是第三种写法,在
                <table>显示表单
                    {% for field in form %}                          # 这是第四种写法,以循环形式显示表单
                        {{ field.label_tag }}:{{ field }}
                        {{ field.errors }}
                    {% endfor %}
                </table>
                <p class="submit"><input type="submit" name="submit" id="submit" class="button-primary" value="注册信息"/></p>
    </form>

    # 注意是记录一下form.as_* 系列的操作是什么意思

  • 相关阅读:
    java算法---五家共井
    JAVA实用工具--javamail
    java基础篇---HTTP协议
    java基础解疑!!!
    java基础解疑!!
    jsp----标签编程(JSTL)
    jsp----EL表达式
    java基础篇---线程问题
    算法篇---java经典问题!!!
    java基础篇---注解(Annotation)
  • 原文地址:https://www.cnblogs.com/supery007/p/8650832.html
Copyright © 2011-2022 走看看