zoukankan      html  css  js  c++  java
  • Django【进阶】modelform

    modelform:models+form
     
    建议尽量用Djangoform,更灵活,但也有人用modelform,写起来很简单
    缺点,在models里面,表模型必须有__str__()方法
    可添加钩子,用法一样
     
     
    实例:
    注释部分根据需求选择添加,其他为必须有的。
    class UserModelForm(ModelForm):
    
        class Meta:
            model = models.UserInfo
            fields = "__all__"
            # fields = ['username','nickname',]
            # exclude = ['username',]
            # error_messages = {
            #     "username": {'required':'用户名不能为空'}
            # }
            # widgets = {
            #     "username":wid.Textarea(attrs={'class':'c1'})
            # }
            # labels = {
            #     'username':'用户名'
            # }
            # help_texts = {
            #     'username': '别瞎写,瞎写打你哦'
            # }
            #
            # field_classes = {
            #     'username': fld.EmailField
            # }
    
        # 钩子
        # def clean_email(self):
        #     pass
        #
        # def clean_nickname(self):
        #     pass
        #
        # def clean(self):
        #     pass
     
    增加和修改,删除简单不示例。
    def user_add(request):
        # 现在的你# 创建Form类:
        if request.method == 'GET':
            model_form = UserModelForm()
            return render(request,'rbac/user_add.html',{'model_form':model_form})
        else:
            model_form = UserModelForm(request.POST)
            if model_form.is_valid():
                model_form.save()
                return redirect('/rbac/users.html')
    
            return render(request, 'rbac/user_add.html', {'model_form': model_form})
    
    
    def user_edit(request,pk):
        obj = models.UserInfo.objects.filter(pk=pk).first()
    
        if not obj:
            return redirect('/rbac/users.html')
        if request.method == 'GET':
            model_form = UserModelForm(instance=obj)
            return render(request,'rbac/user_edit.html',{'model_form':model_form})
        else:
            model_form = UserModelForm(request.POST,instance=obj)
            if model_form.is_valid():
                model_form.save()
                return redirect('/rbac/users.html')
            return render(request, 'rbac/user_edit.html', {'model_form': model_form})
     
    template
    # 表格:
    <body>
        <a href="/rbac/user/add.html">添加</a>
        <table border="1">
            {% for row in user_list %}
                <tr>
                    <td>{{ row.pk }}</td>
                    <td>{{ row.nickname }}</td>
                    <td>{{ row.username }}</td>
                    <td>
                        <a href="/rbac/user/edit/{{ row.pk }}.html">编辑</a>
                    </td>
                </tr>
            {% endfor %}
        </table>
    </body>
    
    # 添加:
    <body>
        <h1>添加用户</h1>
        <form method="POST" novalidate>
            {% csrf_token %}
            {{ model_form.as_p }}
            <input type="submit" value="提交" />
        </form>
    </body>
    
    # 修改:
    <body>
        <h1>编辑用户</h1>
        <form method="POST" novalidate>
            {% csrf_token %}
            {{ model_form.as_p }}
            <input type="submit" value="提交" />
        </form>
    </body>
  • 相关阅读:
    LTE网络注册流程(1)(2)(3)
    Linux 添加用户
    (TOJ2627)台州学院首届新生程序设计竞赛参赛资格
    (TOJ1249)四数相加
    (TOJ1192)A + B Problem II
    (TOJ1065)完美数
    (TOJ1248)Encoding
    (TOJ1051)A × B problem
    (TOJ1506)Sort ZOJ7
    (TOJ1531)爱的伟大意义
  • 原文地址:https://www.cnblogs.com/lucaq/p/7647588.html
Copyright © 2011-2022 走看看