利用shell修改表单数据
我们提前在预先准备的personal_info文件夹中创建一个forms的python文件:
写入如下程序:
from django import forms
class PersonCreateForm(forms.Form):
name = forms.CharField(max_length=255)
age = forms.IntegerField()
gender = forms.BooleanField()
id_card = forms.CharField(max_length=18)
address = forms.CharField(max_length=255)
temperature = forms.FloatField()
打开底部终端(Terminal)窗口:
输入如下代码:
PS E:\djangoProject> python manage.py shell
即可打开相应文件进行修改。
在本文件中我们选择其中的PersonCreateForm函数:
from personal_info.forms import PersonCreatForm
输入想要保存的数据即可:
>>> form = PersonCreateForm(date={'name': '王二狗', 'age': 20, 'gender': 2, 'id_card': '1102928388534344', 'address': '北京市', 'temperature':'37.5'})
在form表单里使用的一些小代码:
>>> form.is_valid()
方法函数is_valid()的作用检查seld.errors是否都正确,例如长度,空值,类型等
form表单只有经过form.is_valid()验证后,才能获取form.cleaned_data和form.errors
>>> form.erors
假如form.is_valid()验证后输出False,则form.erors输出错误的信息
注意:因为form和model没关系,所以即使是在form中验证成功了,在保存数据的时候依旧回报错,form中验证的是写在form中的限定条件,这个条件不一定和model中的一致,就比如我们现在gender=2,form并没有验证出来错误,但是在model中上传数据时因为限定了gender只能为1或0,所以就会报错。
假如form.is_valid()验证后输出True,则form.erors输出空字符串
普通View与Form配合
(1)先新建立一个html文件
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>登记人员信息</title>
</head>
<body>
<form anction="{% url 'personal_info:person_create' %}" method="post">
{% csrf_token %}
<p><label>名字:<input type="text" name="name"></label></p>
<p><label>年龄:<input type="number" name="age"></label></p>
<p><label>性别:<select name="gender">
<option value="1">男</option>
<option value="0">女</option>
</select></label></p>
<p><label>身份证:<input type="text" name="id_card"></label></p>
<p><label>住址:<input type="text" name="address"></label></p>
<p><label>体温:<input type="number" name="temperature" steo="0.1"></label></p>
<p><button type="submit">保存</button></p>
</form>
</body>
</html>
接着在view.py文件中写入引用代码:
from django.shortcuts import render
# Create your views here.
from django.views.generic import ListView
from personal_info.models import Person
from django.views.generic import View
class PersonCreateView(View):
def get(self, request, *args, **kwargs):
return render(request, 'personal_info/person_create.html')
然后在urls.py中:
from django.urls import path
from personal_info.views import PersonList
from personal_info.views import PersonCreate
app_name = 'personal_info'
urlpatterns = [
path('', PersonList.as_view(), name='person_list'),
path('craete/', PersonCreate.as_view(), name='person_create'),
]
完成所有操作后我们便可以运行程序来打开页面,当然首先我们跳转到的是person_list的页面,那么怎样从person_list页面跳转到person_create页面,只需要在person_list.html中table表单下加上一句代码即可
<p><a href={% url 'personal:peraon_create' %}>登记</a></p>