光有表单form,没有业务逻辑views.py助力,它在模板中将手足无措,秀而不实。在views.py中实现的代码来了。
21.1 views.py
from django.shortcuts import render
from department.forms import DepartmentForm
from department.models import Department
# 添加数据
def create(request):
form = DepartmentForm()
if request.method == 'POST':
msg = ''
form = DepartmentForm(request.POST)
if form.is_valid():
name = form.cleaned_data.get('name')
if name_exist(name):
form.add_error('name', "部门名称已存在,请确认!")
msg = ''
else:
department = Department()
department.name = name
department.leader = form.cleaned_data.get('leader')
department.phone = form.cleaned_data.get('phone')
department.region = form.cleaned_data.get('region')
department.address = form.cleaned_data.get('address')
department.longitude = form.cleaned_data.get('longitude')
department.latitude = form.cleaned_data.get('latitude')
department.save()
msg = '恭喜你,创建部门信息成功!'
form = DepartmentForm() # 重置表单内容--清空
return render(request, 'department/create.html', {'form': form, 'msg': msg})
else:
return render(request, 'department/create.html', {'form': form})
21.2 url配置
有关业务逻辑在views.py实现之后,需要在department/urls.py里进行配置,才能提供地址供用户进行访问。
from django.urls import path
from . import views
app_name = 'department'
urlpatterns = [
path('create/', views.create, name='create'),
]
对了,千万,百万别忘记在sales/urls.py中进行登记。
from django.contrib import admin
from django.urls import include, path
urlpatterns = [
path('base/', include('base.urls')),
path('department/', include('department.urls')),
path('admin/', admin.site.urls),
]
21.3 模板文件
一切业务相关的工作准备就绪,就差模板靓丽转身。在templates/department下,新建模板文件create.html。有了模板文件,表单Form就有了展露才华的机会。
如果想要以表格的方式表现,可选用form.as_table;如果想要以段落的方式面世,可选用form.as_p;如果想要以序列的方式见人,可选用form.as_ul。至于具体选用那种,要看需求文档中界面的要求。
至于在html5的form中加入novalidate属性,是为了禁用其自带的校验功能。
{{ msg }}
{% csrf_token %}
{{ form.as_p }}
>
用form.as_p布局的效果如下,另外两种请自行测试。测试的结果可能都会让你大失所望,大跌眼镜,但请不要捶胸顿足,因为捶胸很痛的。
本文来自投稿,不代表本人立场,如若转载,请注明出处:http://www.sosokankan.com/article/1468373.html