把org-list.html拷贝到templates目录下,新建base.html,剪切org-list.html内容到里面
再修改一下静态文件的地址(css、就是、image和media)
(2)机构首页路由
fromorganization.viewsimportOrgViewpath('org_list/',OrgView.as_view(),name='org_list'),(3)机构views
classOrgView(View):'''课程机构'''defget(self,request):returnrender(request,'org-list.html')(4)org-list.html继承base
(5)修改base模板
把base中custom_bread和content两个block的内容剪切到org-list.html里面
base.html
org-list.html
(1)进xadmin后台添加城市
这里机构是静态固定不变的,所在地区是动态的,从数据库中获取得到的
(2)修改机构的models,添加一个机构类别字段
organization/models.py:
(3)添加机构
添加机构信息的时候要上传机构的图片
在项目目录下面新建一个目录“media”,用来存放上传的图片
setting中要配置我们把文件存放在哪个根目录之下
#settings.py#设置上传文件的路径MEDIA_URL='/media/'MEDIA_ROOT=os.path.join(BASE_DIR,'media')#指定根目录会跟upload里面拼接完整的路径
“/media/org/2018/月份/图片名字”
然后在后台添加十个机构
(1)写视图函数organization/views.py
显示机构总共数量
显示城市
显示机构
然后还要做下面的设置
如何将imageField转换成图片地址
数据库中image以字符串格式保存的,是相对路径,直接取是取不出来的,必须补全路径
data-url="{{MEDIA_URL}}{{course_org.image}}"MEDIA_URL='/media/',这个是之前settings中设置好了要向使用{{MEDIA_URL}},要先在settings中TEMPLATES里面添加media处理器:'django.core.context_processors.media'
然后也要添加处理图片相应路径的url
(1)安装
pipinstalldjango-pure-pagination(2)settings里面添加
INSTALLED_APPS=(...'pure_pagination',)(3)views中使用方法
这里变成"all_orgs.object_list"
分页功能
(1)城市列表筛选
后台处理city筛选
{%ifequalcity_id''%}如果为空,说明没有city选中,则“全部”是“active”
(2)类别筛选
后台处理
模板中
(3)课程机构排名筛选
按点击量排名,只取前三个
(4)学习人数和课程的筛选
在models中添加学习人数和课程数两个字段
前端
(1)用ModelForm来实现
在organazition目录下创建forms.py文件
删掉org_list的那个路由,改成include
path("org/",include('organization.urls',namespace="org")),使用命名空间防止重复
然后在organization/urls.py中添加
修改base.html中“课程机构的链接”
HttpResponse可以指定传递到前端的数据类型
(4)配置url
提交数据不合法时
合法时,提示成功信息,数据保存到数据库
(1)给courses添加一个外键
(2)模板
把课程机构页面的四个文件拷贝到templates目录下
新建一个模板,命名为“org_base.html”,复制org-detail-homepage.html的内容到里面
添加block,修改静态文件路径
(3)org-detail-home.html继承模板
把org_base中的三个“right”剪切到home里面
(4)home页面的url
from.viewsimportOrgHomeViewre_path('home/(P
(6)修改org-base.html
(7)为teacher添加一个图形字段
image=models.ImageField(default='',upload_to="teacher/%Y/%m",verbose_name="头像",max_length=100)(8)显示机构教师
(9)显示机构详情
机构首页:
(1)模板文件
把org-detail-course.html中不同的地方(right)取出来
(2)添加url
re_path('course/(P
(5)显示机构课程,修改org-detail-course.html
(6)左侧“active”状态修改
因为现在没有值能判断当前是哪个页面。所以在后台传个currentpage参数
修改org_base.html
(1)url
(2)views
re_path('teacher/(P
(4)org-bae.html中left
(5)修改面包屑,点机构课程应该显示机构课程
然后分别在其它四个页面中重载page_path
其它三个方法一样
Ajax放在org_base.html里面
可以在数据库中看到用户的收藏
再点“收藏”,会提示“已取消收藏”
(4)但是还有个问题就是,刷新页面后,“已收藏”就变成“收藏”,是因为在返回页面的时候,没有判断收藏状态
所有要在views里面加个判断
#判断收藏状态has_fav=Falseifrequest.user.is_authenticated:ifUserFavorite.objects.filter(user=request.user,fav_id=course_org.id,fav_type=2):has_fav=True