您现在的位置是:网站首页> 编程资料编程资料

Python Django框架中表单的用法详解_python_

2023-05-26 323人已围观

简介 Python Django框架中表单的用法详解_python_

Django保证表单的正确显示需要添加CSRF(防止网站跨站请求伪造而默认开启的一种保护方式),在

之间添加

{% csrf_token %}

在项目settings.py中 * ‘django.middleware.csrf.CsrfViewMiddleware’, * 引入,如果没有此中间件,手动添加。

文件上传

首次打开路径是GET请求,如果点击上传是POST请求,如果文件内容不为空,则上传文件,上传路径为主项目下的 media/uploads/,如果路径不存在则新建。open(os.path.join(path + myFile.name), ‘wb+’) 二进制读写打开对应文件,chunks()将文件分块读写。

def upload_file(request): if request.method == "GET": return render(request, 'app1/upload.html') if request.method == "POST": myFile = request.FILES.get("myfile", None) if myFile: path = 'media/uploads/' if not os.path.exists(path): os.makedirs(path) dest = open(os.path.join(path + myFile.name), 'wb+') for chunk in myFile.chunks(): dest.write(chunk) dest.close() return HttpResponse("上传完成") else: return HttpResponse("没有上传文件") 

添加路由。

文件已经上传成功。

Form表单

如下新建一个form.py写入如下代码

from django import forms class UserInfoForm(forms.Form): '''用户状态''' STATUS = ((None, '请选择'), (0, '正常'), (1, '无效'),) username = forms.CharField(label="用户名称", min_length=6, widget=forms.widgets.TextInput( attrs={'class': 'form-control', 'placeholder': '请输入用户名称'} )) password = forms.CharField(label="密码", min_length=6, max_length=10, widget=forms.widgets.PasswordInput( attrs={'class': 'password'}, render_value=True )) age = forms.IntegerField(label="年龄", initial=1) mobile = forms.IntegerField(label="手机号码") status = forms.ChoiceField(label="用户状态", choices=STATUS) createdate = forms.DateTimeField(label="创建时间", required=False) 

表单字段

表单字段说明
CharField文本输入
InterField/FloatField/DecimalField数值输入
ChoiceField选择输入框 choices指定下拉列表
FileField文件
BooleanField复选框
DateField/DateTimeField/TimeField时间输入框,可以设置输入格式 input_format=[“%Y-%m-%d %H:%M”]
EmailField邮件输入框
URLField路劲输入框
ModelChoiceField从数据库获取下拉列表

字段参数

字段说明
labellabel标签
label_suffixLabel标签统一后缀信息
initial初始值
help_text字段描述信息
error_messages字段描述信息
validators验证规则
required是否必须
disabled字段是否可编辑
widget指定HTML样式

widget参数

参数说明
PasswordInput密码输入框
HiddenInput隐藏元素
Textarea文本域
CheckboxInput复选框
FileInput文件输入框
RadioSelect单选按钮
DateTimeInput时间输入框
Select下拉列表
SelectMuitiple多选框

配置视图和路径显示对应表单

app1下的views.py

def userinfo_form(request): if request.method == "GET": myForm = UserInfoForm() return render(request, 'app1/userinfo.html', {'form_obj': myForm}) 

userinfo.html

{% csrf_token %} {{ form_obj.as_p }}