表单验证、分页、图片上传

表单验证

  1. 定义表单

    1
    2
    3
    4
    5
    6
    7
    class RegisterForm(forms.Form):
    title = forms.CharField(min_length=5, required=True,
    error_messages={
    'required': '文章标题是必填项',
    'min_length':'文章标题不能少于5个字符',
    'max_length':'文章标题不能多于5个字符',
    })
  2. 使用表单

    1
    2
    3
    form = RegisterForm(request.POST, request.FILES)
    if form.is_valid():验证是否成功或者失败
    form.errors:获取验证失败的错误信息

分页

  1. 使用切片进行分页
  2. 使用Paginator进行分页
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    P = 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:下一页页码

图片上传

  1. 表单中必须有:enctype=”multipart/form-data”
  2. 视图函数中获取图片:request.FILES
  3. 模型定义保存图片的字段:icon = models.ImageField(upload_to=’article’, null=True)
  4. 在settings.py文件中定义media文件的路径

    1
    2
    3
    # 媒体文件media的配置
    MEDIA_URL = '/media/'
    MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
  5. 页面解析图片:< img src=”/media/“ >

  6. 在工程目录urls.py文件中,告诉django,解析media文件夹中的静态文件
    1
    2
    3
    4
    5
    from django.contrib.staticfiles.urls import static

    from day07.settings import MEDIA_ROOT, MEDIA_URL

    urlpatterns += static(MEDIA_URL, document_root=MEDIA_ROOT)