Django 里实现表格内容上传
先看效果图:
当没有添加数据,就按 提交 键就会出现报错
下面是操作步骤
1. 先在 views.py 文件里做添加
# 在 views.py class AssetModelForm(forms.ModelForm): #newField = forms.CharField() class Meta: model = models.AssetSet fields = ['name', 'price', 'category', 'depart'] #fields = "__all__" """ # 单一的给某个field添加样式 widgets = { 'category': forms.Select(attrs={'style': "width: 300px;"}) } """ # 给所有的 field 提供样式 def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) for name, field in self.fields.items(): if name == "price": continue field.widget.attrs['style'] = "width: 100px" def asset_add(request): """ # 获取所有类型 cat_list = models.AssetSet.category_choices dp_list = models.Department.objects.all() form = AssetForm() """ if request.method == "GET": cat_list = models.AssetSet.category_choices dp_list = models.Department.objects.all() form = AssetModelForm() return render(request, 'asset_add.html', {'cat_list': cat_list, 'dp_list': dp_list, 'form': form}) # print(request.POST) # 隐含功能:字段不能为空 form = AssetModelForm(data=request.POST) if form.is_valid(): # data_dict = form.cleaned_data # 在数据库里创建一条数据 # 第一种写法 # models.AssetSet.objects.create(name=data_dict['name'], price=data_dict['price'], category=data_dict['category'], depart_id=data_dict['depart'].id) """ obj = models.Department.objects.filter(id = 1).first() models.AssetSet.objects.create(name="", price="", category=1, depart=obj) """ # 第二种写法 # models.AssetSet.objects.create(name=data_dict['name'], price=data_dict['price'], category=data_dict['category'], depart=data_dict['depart']) # 第三种方法 # models.AssetSet.objects.create(**data_dict) # 第四种方法 # 用户提交的数据,直接写入数据库 # 这种写法更快地将数据保存到数据表里 form.save() return redirect('/asset/list/') else: print(form.errors) #return HttpResponse("失败") # 传 form 是为了保存表格输入的数据 return render(request, "asset_add.html", {"form": form})
2. 在 asset_add.html 文件里修改
{ form.name }} {{ form.price }} --> {% csrf_token %} {% for field in form %}{{ field.label }}{% endfor %} 提 交{{ field }} {{ field.errors.0 }}
3. 为了使网页呈现中文
在 settings.py 文件里修改
#LANGUAGE_CODE = 'en-us' LANGUAGE_CODE = 'zh-hans'
点个赞呗~
免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!