表单验证
定义表单
1
2
3
4
5
6
7class RegisterForm(forms.Form):
title = forms.CharField(min_length=5, required=True,
error_messages={
'required': '文章标题是必填项',
'min_length':'文章标题不能少于5个字符',
'max_length':'文章标题不能多于5个字符',
})使用表单
1
2
3form = RegisterForm(request.POST, request.FILES)
if form.is_valid():验证是否成功或者失败
form.errors:获取验证失败的错误信息
分页
- 使用切片进行分页
- 使用Paginator进行分页
1
2
3
4
5
6
7
8
9
10
11P = Paginator(需要分页的总数据,一页的数据条数)
page = p.page(获取那一页的页码)
page.num:当前页码
page.p.num_pages:当前一共有多少页
page.p.count:一共有多少条数据
page.p.page_range:页码
page.has_previous:上一页
page.has_next:下一页
page.previous_page_number:上一页页码
page.next_page_number:下一页页码
图片上传
- 表单中必须有:enctype=”multipart/form-data”
- 视图函数中获取图片:request.FILES
- 模型定义保存图片的字段:icon = models.ImageField(upload_to=’article’, null=True)
在settings.py文件中定义media文件的路径
1
2
3# 媒体文件media的配置
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')页面解析图片:< img src=”/media/“ >
- 在工程目录urls.py文件中,告诉django,解析media文件夹中的静态文件
1
2
3
4
5from django.contrib.staticfiles.urls import static
from day07.settings import MEDIA_ROOT, MEDIA_URL
urlpatterns += static(MEDIA_URL, document_root=MEDIA_ROOT)