Django网站建设-教师列表及详情配置,收藏功能使用
2018-02-18 01:26
429 查看
1.设置模板(html文件),复用模板,修改header,面包屑等信息,分页需要用到object-list对象,模板分页处理,模板中href利用‘?参数=’进行参数传递
2.配置url路径
3.配置视图函数,获取所有teacher信息, 分页处理,利用click-num进行拍排序
1.配置url
2.在teacher-list中设置跳转
3.配置模板
4.利用filter或set
5.收藏信息处理
6.跳转配置
7.三级地址测试
2.配置url路径
3.配置视图函数,获取所有teacher信息, 分页处理,利用click-num进行拍排序
教师列表
模板配置
继承模板
{% extends 'organization_base.html' %} {% load staticfiles %} {% block title %}教师列表{% endblock %} {% block custom_bread %}{% endblock %} {% block customcss %}{% endblock %} {% block header %}{% endblock %}
对每个教师内容进行数据关联,注意利用pure_pagination进行分页的,传回的对象要使用object_list 作为返回对象
{% for teacher in teachers.object_list %} <dl class="des"> <dt> <a href="/org/teacher/detail/1/"> <div class="picpic"> <img width="100" height="100" class="scrollLoading" src="{{ MEDIA_URL }}{{ teacher.TeacherImage }}"/> </div> </a> <div class="btn"> <div class="fr btn2 bdsharebuttonbox" data-text="授课教师-奥巴马-慕学在线" data-desc="我在#慕课网#发现了教师“奥巴马”,对学习中的小伙伴很有帮助,一起来看看吧。" data-comment="奥巴马金牌讲师,从业年限:5年" > <span class="fl">分享</span> <a href="#" class="bds_more" data-cmd="more"></a> </div> </div> </dt> <dd> <a href="/org/teacher/detail/1/"> <h1>bobby<span class="key picbig">金牌讲师</span></h1> </a> <ul class="cont"> <li>工作年限:<span>{{ teacher.WorkLife }}年</span></li> <li>工作职位:<span>{{ teacher.WorkPosition }}</span></li> <li>就职公司:<span>{{ teacher.WorkCompany }}</span></li> <li>年龄:<span>{{ teacher.Age }}岁</span></li> <li>教学特点:<span>{{ teacher.Characteristic }}</span></li> </ul> </dd> <a class="buy buyservice" href="/org/teacher/detail/1/"><br/>查看<br/>详情</a> </dl> {% endfor %}
进行分页处理
<div class="pageturn"> {# 分页处理 #} <ul class="pagelist"> {% if teachers.has_previous %} {# 判断是否有前一页逻辑 #} <li class="long"><a href="?{{ teachers.previous_page_number.querystring }}" >上一页</a></li> {% endif %} {% for page in teachers.pages %} {% if page %} {% ifequal page teachers.number %} {# 判断是否是当前页 #} <li class="active"><a href="?{{ page.querystring }}">{{ page }}</a></li> {% else %} {# 如果不是当前页的话 #} <li><a href="?{{ page.querystring }}" class="page">{{ page }}</a></li> {% endifequal %} {% endif %} {% endfor %} {% if teachers.has_next %} {# 判断是否有后一页逻辑 #} <li class="long"><a href="?{{ teachers.next_page_number.querystring }}">下一页</a></li> {% endif %} </ul>
URL配置
url(r'^teacher_list/$', TeacherListView.as_view(), name='teacher_list'),
视图函数配置
class TeacherListView(View): def get(self,request): #获取所有教师信息 all_teacher = Teacher.objects.all() #获取热门教师信息 hot_teachers = Teacher.objects.all().order_by('ClickNumber')[:3] #教师人数 teachers_num = all_teacher.count() ###############################课程排序################################### # 需要筛选完成后才能进行排序 sort = request.GET.get('sort', '') # 过去参数 if sort: if sort == 'hot': # 按学生人数进行排名 all_teacher = all_teacher.order_by('-ClickNumber') # 倒叙排列 ###############################分页功能################################### try: page = request.GET.get('page', 1) except PageNotAnInteger: page = 1 # Provide Paginator with the request object for complete querystring generation p = Paginator(all_teacher, 2, request=request) teachers = p.page(page) return render(request, 'teachers_list.html', {'teachers':teachers,'hot_teachers':hot_teachers,'sort':sort,'teacher_num':teachers_num})
1.配置url
2.在teacher-list中设置跳转
3.配置模板
4.利用filter或set
5.收藏信息处理
6.跳转配置
7.三级地址测试
教师详情
在teacher-list中配置好详情页面的跳转
<a href="{% url 'organization:teacher_detail' teacher.id %}">
配置url,需要传入teacher_id,利用id对教师信息进行检索
url(r'^teacher_detail/(?P<teacher_id>\d+)/$', TeacherDetailView.as_view(), name='teacher_detail'),
配置好模板,实现数据对接,一下面为例
<dd>
<a href="{% url 'organization:teacher_detail' teacher.id %}"><h1>{{ teacher.TeacherName }}<span class="key picbig">金牌讲师</span></h1>
</a>
<ul class="cont">
<li>工作年限:<span>{{ teacher.WorkLife }}年</span></li>
<li>就职公司:<span>{{ teacher.WorkCompany }}</span></li>
<li>工作职位:<span>{{ teacher.WorkPosition }} </span></li>
<li>教学特点:<span>{{ teacher.Characteristic }}</span></li>
</ul>
</dd>
配置视图函数,实现数据输出
class TeacherDetailView(View): def get(self,request,teacher_id): #教师信息 teacher = Teacher.objects.get(id=teacher_id) #教师的课程 courses = teacher.course_set.all()[:3] #course内有teacher这个外键,利用_set获取与该teacher相关的所有课程 #教师排行榜 all_teacher = Teacher.objects.all() #收藏状态 teacher_fav = False organization_fav = False if request.user.is_authenticated(): #先判断是否登陆 if UserFavorite.objects.filter(User=request.user.id,FavoriteID=teacher.id,FavoriteType=3): teacher_fav = True if UserFavorite.objects.filter(User=request.user.id, FavoriteID=teacher.id, FavoriteType=2): organization_fav = True return render(request, 'teacher_detail.html', {'teacher':teacher,'courses':courses,'all_teacher':all_teacher,'teacher_fav':teacher_fav,'organization_fav':organization_fav})
设置好数据的跳转,例:
<a href="{% url 'organization:teacher_detail' teacher.id %}">
收藏功能,利用Ajax功能,实现收藏信息的异步上传,与原有的收藏功能({% url ‘organization:user_fav’ %})进行挂接,复用收藏函数
{% block custom_js %} <script type="text/javascript"> //收藏分享 function add_fav(current_elem, fav_id, fav_type){ $.ajax({ cache: false, type: "POST", url:"{% url 'organization:user_fav' %}", data:{'fav_id':fav_id, 'fav_type':fav_type}, async: true, beforeSend:function(xhr, settings){ xhr.setRequestHeader("X-CSRFToken", "{{ csrf_token }}"); }, success: function(data) { if(data.status == 'fail'){ if(data.msg == '用户未登录'){ window.location.href="{% url 'user_login' %}?next={{ request.path }}"; }else{ alert(data.msg) } }else if(data.status == 'success'){ current_elem.text(data.msg) } }, }); } $('#jsLeftBtn').on('click', function(){ add_fav($(this), {{ teacher.id }}, 3); }); $('#jsRightBtn').on('click', function(){ add_fav($(this), {{ teacher.id }}, 2); }); </script> {% endblock %}
注意刷新后收藏信息的展示,在视图函数中,查询用户行为数据库(operation),获取收藏信息返回至模板中
teacher_fav = False organization_fav = False if request.user.is_authenticated(): #先判断是否登陆 if UserFavorite.objects.filter(User=request.user.id,FavoriteID=teacher.id,FavoriteType=3): teacher_fav = True if UserFavorite.objects.filter(User=request.user.id, FavoriteID=teacher.id, FavoriteType=2): organization_fav = True
相关文章推荐
- Django网站建设-全局导航配置,全局搜索
- FSO组件不可用,各种与FSO相关的功能都将出错!请运行Install.asp或者到后台网站配置处设置好FSO组件名称。或无法使用vbscript
- 二代旅游网站程序V1使用手册(九):图片水印配置及批量水印的功能
- Django网站建设-头像修改,邮箱及密码修改(form,js文件,模板配置)
- 友盟Umeng统计、更新功能使用教程 分类: Android安装及配置 2014-06-29 18:19 223人阅读 评论(0) 收藏
- 二代旅游网站程序V1使用手册(九):图片水印配置及批量水印的功能
- Django网站建设-我的课程,我的收藏,内容显示判断
- php环境配置中各个模块在网站建设中的功能
- 网站建设之Django搭建与配置
- Django网站建设-点击/收藏量、未读消息,错误页面显示404,500
- 网站建设中使用HTML5实现使用手机摄像头拍照上传的功能
- Weiphp 2.0出现Oh! 当前插件没有管理列表和配置功能,可直接使用即可!
- FCKeditor的常用配置方法和无法使用上传功能的解决!
- 使用XML读写删除功能来实现资源文件配置
- 建立一个使用.Net 2.0 MemberShip功能的标准例程(二)——配置篇
- 大社区型网站的架构总结之如何标示用户在使用哪个功能程序篇(草稿)
- 在IIS中使用SSL配置HTTPS网站
- Tomcat5.5使用gzip压缩(HTTP压缩)功能配置如下:
- webcast(利用MOSS CMS功能建设internet网站)学习笔记
- 在网站中使用跟踪功能