关于urls的重新分发: 如果所有url都配置在根路径的urls.py里,会特别多,而且也不易于修改,Django框架里支持urls的重新分发: 1.在根路径的urls配置上: PS:namespace是定义命名空间,比如下面这种配置, urlpatterns = [ #课程机构url配置,验证码,每个app可以书写自己的url,然后通过include进来 url(r'^org/', include('oraganization.urls',namespace="org")), ] 2…
今天完成的是课程机构列表页.... 1.启动服务,进入xadmin后,添加5个城市信息用作测试数据 2.添加课程机构,其中有一项要上传封面图的地方要注意 封面图上传路径是我们在models中设置好的 在数据表中,我们存放的是相对路径,但是Django怎么知道存在哪个根目录下呢?首先我们现在项目的根目录创建一个文件夹media,我们来把media作为根目录 设置settings.py,配置media # 在末尾添加此两行 MEDIA_URL = '/media/' MEDIA_ROOT = os.…
1.复制teracher-list.html到templates目录下 2.编辑teacher-list.html,继承base模板 3.编辑organization.views.py ... from .models import Teacher class TeacherListView(View): def get(self, request): all_teachers = Teacher.objects.all() return render(request, 'teachers-li…
实现根据城市&课程机构过滤 实现点谁谁高亮,支持取交集. 直接上代码吧 本质上是过滤,多层过滤,取交集 def get(self, request): all_orgs = CourseOrg.objects.all() # 所有课程机构 all_citys = CityDict.objects.all() # 所有城市列表 # 取出筛选城市 city_id = request.GET.get("city", "") if city_id: all_orgs…
1.进入xadmin添加测试数据(教师.课程) 2.把以下4个前端页面复制到templates中 先打开这几个页面分析,它们和之前的课程机构列表页是不一样的机构,且没有共同的部分,但是这4个页面却是类似的,因此它们不能基于之前的base.html来做模板,我们再创建一个模板文件org_base.html 3.把org-detail-homepage.html的内容拷贝到org_base.html中 4.编辑org_base.html,替换静态文件(css/js/images) 5.把会变化的内容…
我们看课程 机构列表页是需要分页的 为了完成分页功能,我们需要用到Django的一个开源开发库django-pure-pagination workon mxonline pip install django-pure-pagination 安装完成之后,我们需要把'pure_pagination'加入到INSTALLED_APPS INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.…
1.复制teacher-detail.html到templates目录下 2.编辑teacher-detail.html,继承base.html 3.编辑organization.view.py class TeacherDetailView(View): def get(self, request, teacher_id): teacher = Teacher.objects.get(id=teacher_id) return render(request, 'teacher-detail.h…
针对上一节的新需求,界面设计师还为我们设计了一个新的界面,不仅仅是目录页,还包含了站点的整体风格,如下图: 感谢界面设计师为我们提供的“又黑又硬”的工具条,这个看起来真的很酷.下面,让我们来享用她的工作成果吧. 我们前面的scaffold已经生成了有继承关系模板,显然对于一些公用的内容应该放到base.html之中.但是我们先把这件事情放到一边,先来实现目录页. 首选为目录页确定一个url,不妨叫做/depotapp/store,在depotapp的urls.py中增加一条pattern: (r…
34.列表页_小BUG的修复 当高粱酒的子类没有数据返回的时候就会报错. 解决接口空数据报错的问题 没有数据的时候,给用户一个友好的提示, 我们没有数据的时候还要告诉用户,提示一下他没有数据,在我们的右侧列表的build方法内去判断 友好提示展示效果: 子类的id状态化 状态管理里面,定义小类的变量,并根据传入的id根性赋值.这样我们在点击小类的时候,需要也传入小类的id 这样我们在小类点击事件里面,传入小类的id就可以了 测试程序 点击小类进行测试 最终代码: provide/child_ca…
25.列表页_使用Provide控制子类-1 主要是二级分类的UI布局 1分15秒 生成我们的右侧动态类 定义list变量 开始写里面的子项,把每一个小的写了 再拼成一个大的 这样我们的小类就写完了 开始写我的大类别:是一个横向的ListView.写横向的ListView就必须设置宽和高 ListView如果是纵向的不需要设置高度,如果是横向的就必须设置宽和高 这里使用构造器的形式,动态构造.ListView.builder() 大类的代码: 调用我们的大类 布局的划分:最外层用Row,右侧用上…
26.列表页_使用Provide控制子类-2 主要实现功能,点击一级分类,二级分类跟着变.这里主要用哦我们的provide 新建provide provide文件夹下创建:child_category.dart 事件上就是这个实体:BxMallSubDto 这样我们的Provide类就写完了. 然后在main.dart中注册provide import './provide/child_category.dart'; 继续category_page.dart 先引入我们的provide和chil…
27.列表页_现有Bug修复和完善 小解决小bug 默认右侧的小类没有被加载 数据加载完成后,就list的第一个子对象传递给provide进行赋值,这样右侧的小类就刷新了数据 默认加载了第一个类别 调整颜色 对比图片调整下颜色 这里的参数r:就是red红色 g:green绿色 b:blue蓝色 opacity:就是透明度 最终修改成颜色: Color.fromRGBO(, , , 1.0) 全部 点击类别的时候默认有一个全部,我们的数据里面默认是没有这个全部的.这就需要我们自己把这个子类加上 我…
28.列表页_商品列表后台接口调试 主要调试商品列表页的接口 这个接口是最难的因为有大类.小类还有上拉加载 先配置接口 config/service_url.dart //const serviceUrl='http://test.baixingliangfan.cn/baixing/';//2019-04-12失效 const serviceUrl='https://wxmini.baixingliangfan.cn/baixing/';//从群里那个github的地址找到的 const se…
29.列表页_商品列表数据模型建立 简历数据模型 json生成dart类的网站: https://javiercbk.github.io/json_to_dart/ json数据 {","message":"success","data":[{"image":"http://images.baixingliangfan.cn/compressedPic/20190116145309_40.jpg"…
30.列表页_商品列表UI界面布局 小程序里面的布局方式 小程序的图片上这里使用的是warp布局,因为首页里面火爆专区,已经用过了warp来布局了. 所以这里我们没有必要再讲一遍,这里我们使用ListView,我们把它布局成下图这种形式: 我们拆的散一点,用内部方法的形式,我们把图片和名称分别拆成单独的方法去实现,然后在组合成一个子项赋值给ListView 开始写内部方法 图片widget 如果图片很大的话,我们需要设定一个限制,这个时候就体现出来这个外层套一个Container的好处.很容易给…
31.列表页_列表切换交互制作 博客地址:https://jspang.com/post/FlutterShop.html#toc-c42 点击左侧的大类右边的小类也跟着变化 新建provide 要改变哪里就建哪里的provide,我们现在要改变的是右边的商品列表的数组. category_goods_list.dart 这样我们的provide类就做好了 做好的provide类放到main.dart中注册 这一步叫做 把状态放入顶层 category_page.dart修改 _getGoods…
32.列表页_小类高亮交互效果制作 点击大类右侧的横向的小类红色显示当前的小类别 解决之前溢出的问题: 先解决一个bug,之前右侧的这里设置的高度是1000,但是有不同的虚拟机和手机设别的问题造成了溢出的问题. Expaned是有伸缩能力的小部件,继承于Flexible 外层套一个Expanded,内部的Contaienr的高度不再设置 右侧列表没有设置高度一样显示出来了. provide的修改 使用provide来交互,左侧大类是一个,右侧上面横向的小类是一个,两个类之间交互使用provide…
33.列表页_子类和商品列表交互效果 主要实现点击小类下面的列表跟着切换 获取右侧下面的列表信息,即要传递大类的id也要传递小类的,所以需要把左侧的大类的id也要Provide化 可以看下网站上的接口说明: https://jspang.com/posts/2019/03/01/flutter-shop.html#%E5%90%8E%E7%AB%AF%E6%8E%A5%E5%8F%A3api%E6%96%87%E6%A1%A3 大类id Provide化 当我们点击左侧的大类的时候,要把当前的大…
35.列表页_上拉加载更多制作 右侧列表上拉加载配合类别的切换 上拉加载需要一个page参数,当点击大类或者小类的时候,这个page就要变成1 provide内定义参数 首先我们需要定义一个page的变量 下图是我们之前在首页的时候做的上拉加载代码,之前属性noMoreText我们没有设置值,这里我也需要把这个属性加入到provide里面去. 在大类和小类的初始化的方法内,都需要把page设置为1,然后把提示信息设置为空 然后我们需要做page增加的方法,上拉刷新的时候,这个page值是不断的增…
如果是第一次做这个玩意,说实话,确实不知道怎么弄, 做一次后就有感觉了 此前我们已经完成了: 分类筛选 分页 这次我们做的是 课程机构排名 知识点: - 按照点击数从大到小排名, 取出前三名 hot_orgs = all_orgs.order_by("-click_nums")[:3] - 模板中for语句会自动产生forloop变量,可以计数,用来显示排名 <p>{{ forloop.counter }}</p> 授课机构排名 orgView 安装点数从大到小…
课程列表页分析 1,机构类型 2,所在地区 3.排序 学习人数 先分析下 纵观页面,页头页脚都一样. django提供了模板继承. 至少 不同页面的title 面包屑路径 content内容不一致,以前总结个django模板继承 base.html(页头页脚公用, tilte content等block) ---> org-list.html(继承base, 将父block替换成自己的) 整改org-list的templates为继承模式 这里我自己写了个简单的style.css. 这里静态文件…
原型是 实现效果 因为要按照这两个指标排名, 模型中现在还没有这2个字段(整数),所以需要修改模型. 修改模型,添加2个排序指标的字段 class CourseOrg(models.Model): ... students = models.IntegerField(default=0,verbose_name="学习人数") course_nums = models.IntegerField(default=0,verbose_name="课程数") 修改view…
今天完成的是课程机构列表页面的最后一个模块:我要学习 我们在models中创建对应的表时UserAsk.之前我们讲过:在做表单的时候,我们可以通过forms先对提交的数据做验证,之前我们使用的是Form,当一张表里面的字段比较多,我们可以采用Model.Form 在organizations下面新建forms.py class UserAskForm(forms.ModelForm): class Meta: model = UserAsk #我们可以指定model里那些字段,比如说add_ti…
使用Python3.6与Django2.0.2(Django-rest-framework)以及前端vue开发的前后端分离的商城网站 项目支持支付宝支付(暂不支持微信支付),支持手机短信验证码注册, 支持第三方登录.集成了sentry错误监控系统. 本小节内容: Django原生以及使用drf 完成 商品列表页 django的view实现商品列表页 本章节很重要. 通过Django的fbv cbv (class base view)都可以实现. 更建议通过基于class的view编码,面向对象.…
这里点击"收藏"也是ajax异步操作,我在operation.model.py中创建了一个用户收藏表,其中fav_id字段,如果我们收藏的是课程,那就是课程id,如果收藏的是课程机构,那就是课程机构id,如果收藏的是讲师,那就是讲师id. 编辑organization.views.py ... from operation.models import UserFavorite class UserFavView(View): def post(self, request): fav_i…
文章摘自https://juejin.im/post/5b0b7d74518825158e173a0c 作为互联网项目,最重要的便是用户体验.在举国“互联网+”的热潮中,用户至上也已经被大多数企业所接收,特别是在如今移动端快速发展的时代,我们的网页不仅只是呈现在用户的PC浏览器里,更多的时候,用户是通过移动产品浏览我们的网页.加之有越来越多的开发者投入到Web APP和Hybrid APP的开发队伍中,性能,又再一次成为了被程序员们重点关注的话题.我曾经看到过这样一句话:一个网站的体验,决定了用…
第三百七十五节,Django+Xadmin打造上线标准的在线教育平台—创建课程机构app,在models.py文件生成3张表,城市表.课程机构表.讲师表 创建名称为app_organization的课程机构APP,写数据库操作文件models.py models.py文件 #!/usr/bin/env python # -*- coding:utf-8 -*- from __future__ import unicode_literals from datetime import datetim…
1.编辑course-comment.html 2.编辑courses.views.py class CourseCommentView(LoginRequiredMixin, View): def get(self, request, course_id): course = Course.objects.get(id=course_id) return render(request, 'course-comment.html', { 'course': course, }) 3.配置url…
在课程详情页中,点击"开始学习",就进入到这课程章节信息,这里面包含了两个页面:"章节"和评论 1.把course-video.html(章节).course-comment.html(评论)复制到templates中 2.编辑course-video.html,继承base.html 3.编辑courses.views.py class CourseInfoView(View): def get(self, request, course_id): course…
1.把course-detail.html复制到templates目录下 2.编辑course-detail.html,分析页面,继承base.html 3.编辑courses.views .... class CourseDetailView(View): def get(self, request, course_id): return render(request, 'course-detail.html', {}) 4.创建一个url,编辑courses.urls.py ... from…