上传图片和分页

一, 图片上传

  1. 模板层

    • 上传图片(注意form表单)

    • {% load staticfiles %}

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传在这里插入图片描述

    • 展示图片

      {% for course in courses %}
              <tr>
                  <td>{{ course.course }}</td>
                  <td>{{ course.user }}</td>
                  <td><img src="{% static course.picture %}" alt="图片" width="100" height="100"></td>
                  {% if course.user.id == t_id %}
                      <td><a href="/delete_course/{{ course.id }}">删除</a></td>
                  {% else %}
                      <td>不能删除</td>
                  {% endif %}
              </tr>
          {% endfor %}
      
  2. 视图层

    import os
    from education_project.settings import STATICFILES_DIRS
    def post(self,request):
            t_id=request.session.get('t_id')
            taecher=models.User.objects.get(id=t_id) #通过session_id查找具体登陆的老师
            course=request.POST.get('course') #课程名
            picture=request.FILES.get('picture')#图片名
            if picture: #如果上传图片
                print('图片上传')
                img_name=course +'.' + picture.name.split('.')[-1] #取到后缀
                print(img_name)
                img_path='img/' + img_name # 数据库存储的路径
                with open(os.path.join(STATICFILES_DIRS[0],img_path),'wb') as fp:
                    fp.write(picture.read())
            a=models.Timetable.objects.create(
                course=course,
                user=taecher, #负责课程的老师
                picture=img_path
                )
            if a:
                error='添加成功'
            else:
                error='添加失败'
            return render(request,'add_class.html',locals())
    
    

三,分页

  1. 视图层

    from django.core.paginator import Paginator,PageNotAnInteger,EmptyPage,InvalidPage
    
    class Index(View):
        def get(self,request):
            courses=models.Timetable.objects.order_by('-num')
            t_id=request.session.get('t_id')
            s_id=request.session.get('s_id')
            #分页
            paginator=Paginator(courses,3)
            page=request.GET.get('page')
            try:
                courses=paginator.page(page)
            except PageNotAnInteger: #请求页数不是整数,返回第一页
                courses=paginator.page(1)
            except InvalidPage: #请求页面不存在
                return HttpResponse('找不到页面')
            except EmptyPage: #请求页面不在合法范围内 返回最后一页
                courses=paginator.page(paginator.num_pages) # 
            return render(request,'index.html',locals())
    
  2. 模板层

    <div class="pagination" align='center'>
            <span class="step-links">
                {% if courses.has_previous %}
                    <a href="?page={{ courses.previous_page_number }}">上一页</a>
                {% endif %}
    
                <span class="current">
                    Page {{ courses.number }}/{{ courses.paginator.num_pages }}
                </span>
                {% if courses.has_next %}
                    <a href="?page={{ courses.next_page_number }}">下一页</a>
                {% else %}
                    <a>末页</a>
                {% endif %}
            </span>
    </div>
    

se %}
末页
{% endif %}


```

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值