Djangoform组件——ModelForm的基本使用
from django.contrib import admin from django.urls import path from app01 import views urlpatterns = [ path('admin/', admin.site.urls), path('login/',views.login) ]
from django.db import models class Userinfo(models.Model): username = models.CharField(max_length=20) password = models.CharField(max_length=60)
from django.shortcuts import render,HttpResponse from django import forms #导入forms组件 from app01.models import Userinfo #导入要使用的模型 #之前自己定义表单类的字段,现在继承ModelForm后,可以直接将模型生成一个form表单 class UserLoginForm(forms.ModelForm): #定义一个类,要继承 ModelForm password = forms.CharField( #如果模型中的字段不够用,也可以自己定义字段,自己加的字段在生成表单的时候默认会放在最后 widget=forms.widgets.PasswordInput(render_value=True) ) class Meta: model = Userinfo #指定要使用的模型 fields = '__all__' #要显示哪些字段, '__all__'表示全部显示, 也可以显示一部分:fields = ['字段1','字段2','字段3', ...] exclude = ['password'] #不显示的字段 def login(request): if request.method == 'POST': userloginform = UserLoginForm(request.POST) userloginform.save() #将提交的form表单数据对应的字段数据保存到数据库中 return HttpResponse('保存成功') else: userloginform = UserLoginForm() return render(request,'login.html',{'userloginform': userloginform})
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Login</title> <style></style> </head> <body> <form action="" method="post" novalidate> {% csrf_token %} <div> {{ userloginform.as_p }} {# userloginform.as_p: 将所有的元素渲染在<p>标签中显示 , 同理的还有{{ form.as_table }}和{{ form.as_ul }} #} </div> <div> <input type="submit" value="提交"> </div> </form> </body> </html>