当前位置: 首页 > news >正文

装修效果图网站推荐自适应网站m域名必须做301

装修效果图网站推荐,自适应网站m域名必须做301,高校心理健康网站建设与实现,wordpress个人展示网站6八、授课机构功能 1、模板继承 如果几个页面的大体结构相同#xff0c;可以使用继承的方式来实现母版的重用性#xff0c;也就是子版继承母版的内容#xff0c;既可以使用模板的内容#xff0c;也可以重写需要改变的地地方。 首先完成授课机构的页面#xff0c;通过页面显…八、授课机构功能 1、模板继承   如果几个页面的大体结构相同可以使用继承的方式来实现母版的重用性也就是子版继承母版的内容既可以使用模板的内容也可以重写需要改变的地地方。   首先完成授课机构的页面通过页面显示发现   先把org-list.html页面拷贝到templates下在该目录下新建base.html页面然后将org-list.html内容剪切到base.html下然后修改静态文件的路径在base.html页面下找到需要block的地方以供子版继承重写   org-list.html继承base.html自定义org-list.html页面中的内容   base.html页面还需要修改的地方是顶部登录注册的显示问题这个问题和index.html页面的一样只需要将index页面的拷贝过来即可。 2、后端机构列表接口 2.1 机构列表接口   在organization/views.oy文件下编写机构列表的接口 1 class OrgView(View): 2 机构列表 3 def get(self, request): 4 return render(request, org-list.html)   配置url 1 from organization.views import OrgView 2 3 urlpatterns [ 4 path(org_list/, OrgView.as_view(), nameorg_list) # 机构列表 5 ]   然后修改index.html导航栏跳转到机构列表的url   现在访问机构列表页就可以看到页面了。 2.2 后台添加数据   后台添加城市的相关数据   后台添加机构的相关数据不过需要先在organization/models.py机构中添加一个字段category用来区分机构的类别 1 class CourseOrg(models.Model):2 课程机构3 CATEGORY_CHOICES (4 (pxjg, 培训机构),5 (gx, 高校),6 (gr, 个人)7 )8 name models.CharField(机构名称, max_length50)9 category models.CharField(机构类别, max_length20, choicesCATEGORY_CHOICES, defaultpxjg) 10 desc models.TextField(机构描述) 11 click_nums models.IntegerField(点击数, default0) 12 fav_nums models.IntegerField(收藏数, default0) 13 image models.ImageField(封面图, upload_toorg/%Y/%m, max_length100) 14 address models.CharField(地址, max_length150) 15 city models.ForeignKey(CityDict, verbose_name所在城市, on_deletemodels.CASCADE) 16 add_time models.DateTimeField(添加时间, defaultdatetime.now) 17 18 class Meta: 19 verbose_name 课程机构 20 verbose_name_plural verbose_name   修改之后需要迁移数据库。   在后台添加机构信息的时候需要上传机构的图片在项目根目录下新建一个media用来存放上传的图片然后在settings.py文件中设置上传文件的路径 1 # 上传文件的路径 2 MEDIA_URL /media/ 3 MEDIA_ROOT os.path.join(BASE_DIR, media)   然后现在添加机构的数据 2.3 完善机构列表的接口 1 class OrgView(View):2 机构列表3 def get(self, request):4 # 取出所有的机构5 all_orgs CourseOrg.objects.all()6 org_nums all_orgs.count()7 8 # 取出所有的城市9 all_citys CityDict.objects.all() 10 11 return render(request, org-list.html, { 12 all_orgs: all_orgs, 13 all_citys: all_citys, 14 org_nums: org_nums 15 })   然后修改前端org-list.html显示的内容   要显示后台的图片需要在settings.py中的TEMPLATES添加图片处理器django.template.context_processors.media如下 1 TEMPLATES [2 {3 BACKEND: django.template.backends.django.DjangoTemplates,4 DIRS: [os.path.join(BASE_DIR, templates)]5 ,6 APP_DIRS: True,7 OPTIONS: {8 context_processors: [9 django.template.context_processors.debug, 10 django.template.context_processors.request, 11 django.contrib.auth.context_processors.auth, 12 django.contrib.messages.context_processors.messages, 13 # 图片处理器为了在课程列表中前面加上MEDIA_URL 14 django.template.context_processors.media, 15 ], 16 }, 17 }, 18 ]   然后在urls中配置处理图片的url固定写法 1 from django.views.static import serve 2 from MxOnline.settings import MEDIA_ROOT 3 4 urlpatterns [ 5 re_path(r^media/(?Ppath.*), serve, {document_root: MEDIA_ROOT}), # 处理图片显示 6 ]   现在刷新列表页即可看到如下效果 3、分页功能   机构如果超出每一页的数量就需要使用分页在这里使用第三方库django-pure-pagination来实现分页。 3.1 安装   在虚拟环境中直接pip install django-pure-pagination 3.2 注册   将pure_pagination注册进INSTALLED_APPS中 1 INSTALLED_APPS [ 2 pure_pagination, 3 ] 3.3 在机构列表接口加入分页逻辑 1 class OrgView(View):2 机构列表3 def get(self, request):4 # 取出所有的机构5 all_orgs CourseOrg.objects.all()6 org_nums all_orgs.count()7 8 # 取出所有的城市9 all_citys CityDict.objects.all() 10 11 # 分页 12 try: 13 page request.GET.get(page, 1) 14 except PageNotAnInteger: 15 page 1 16 p Paginator(all_orgs, 5, requestrequest) 17 orgs p.page(page) 18 19 return render(request, org-list.html, { 20 all_orgs: orgs, 21 all_citys: all_citys, 22 org_nums: org_nums 23 })   然后修改org-list.html中的all_orgs   在org-list.html中修改前端分页显示的代码   刷新列表页后每页显示5条机构 4、筛选功能 4.1 城市筛选   在机构列表接口中完善筛选数据的逻辑 1 class OrgView(View):2 机构列表3 def get(self, request):4 # 取出所有的机构5 all_orgs CourseOrg.objects.all()6 org_nums all_orgs.count()7 8 # 取出所有的城市9 all_citys CityDict.objects.all() 10 11 # 筛选(从request中获取城市的id) 12 city_id request.GET.get(city, ) 13 if city_id: 14 all_orgs all_orgs.filter(city_idint(city_id)) 15 16 # 分页 17 try: 18 page request.GET.get(page, 1) 19 except PageNotAnInteger: 20 page 1 21 p Paginator(all_orgs, 5, requestrequest) 22 orgs p.page(page) 23 24 return render(request, org-list.html, { 25 all_orgs: orgs, 26 all_citys: all_citys, 27 org_nums: org_nums, 28 city_id: city_id 29 })   前端显示的修改如下 4.2 类别筛选   继续在机构列表接口完善类别筛选功能 1 class OrgView(View):2 机构列表3 def get(self, request):4 # 取出所有的机构5 all_orgs CourseOrg.objects.all()6 7 # 取出所有的城市8 all_citys CityDict.objects.all()9 10 # 城市筛选(从request中获取城市的id) 11 city_id request.GET.get(city, ) 12 if city_id: 13 all_orgs all_orgs.filter(city_idint(city_id)) 14 15 # 类别筛选(从request中获取机构类别ct) 16 category request.GET.get(ct, ) 17 if category: 18 all_orgs all_orgs.filter(categorycategory) 19 20 # 筛选完再统计数量 21 org_nums all_orgs.count() 22 23 # 分页 24 try: 25 page request.GET.get(page, 1) 26 except PageNotAnInteger: 27 page 1 28 p Paginator(all_orgs, 5, requestrequest) 29 orgs p.page(page) 30 31 return render(request, org-list.html, { 32 all_orgs: orgs, 33 all_citys: all_citys, 34 org_nums: org_nums, 35 city_id: city_id, 36 category: category 37 })   前端的显示修改内容如下   修改完成之后筛选功能完成可以根据类别和城市筛选机构 4.3 机构排名筛选   机构的排名按照点击量进行排名在机构列表接口中添加排名筛选逻辑 1 class OrgView(View):2 机构列表3 def get(self, request):4 # 取出所有的机构5 all_orgs CourseOrg.objects.all()6 7 # 取出所有的城市8 all_citys CityDict.objects.all()9 10 # 排名筛选(根据点击量排名) 11 hot_orgs all_orgs.order_by(-click_nums)[:3] 12 13 # 城市筛选(从request中获取城市的id) 14 city_id request.GET.get(city, ) 15 if city_id: 16 all_orgs all_orgs.filter(city_idint(city_id)) 17 18 # 类别筛选(从request中获取机构类别ct) 19 category request.GET.get(ct, ) 20 if category: 21 all_orgs all_orgs.filter(categorycategory) 22 23 # 筛选完再统计数量 24 org_nums all_orgs.count() 25 26 # 分页 27 try: 28 page request.GET.get(page, 1) 29 except PageNotAnInteger: 30 page 1 31 p Paginator(all_orgs, 5, requestrequest) 32 orgs p.page(page) 33 34 return render(request, org-list.html, { 35 all_orgs: orgs, 36 all_citys: all_citys, 37 org_nums: org_nums, 38 city_id: city_id, 39 category: category, 40 hot_orgs: hot_orgs 41 })   然后修改前端显示代码 4.4 学习人数和课程排名筛选   首先在organization/models.py中的CourseOrg中加入students和course_nums两个字段 1 class CourseOrg(models.Model):2 课程机构3 CATEGORY_CHOICES (4 (pxjg, 培训机构),5 (gx, 高校),6 (gr, 个人)7 )8 name models.CharField(机构名称, max_length50)9 category models.CharField(机构类别, max_length20, choicesCATEGORY_CHOICES, defaultpxjg) 10 desc models.TextField(机构描述) 11 students models.IntegerField(学习人数, default0) 12 course_nums models.IntegerField(课程数, default0) 13 click_nums models.IntegerField(点击数, default0) 14 fav_nums models.IntegerField(收藏数, default0) 15 image models.ImageField(封面图, upload_toorg/%Y/%m, max_length100) 16 address models.CharField(地址, max_length150) 17 city models.ForeignKey(CityDict, verbose_name所在城市, on_deletemodels.CASCADE) 18 add_time models.DateTimeField(添加时间, defaultdatetime.now) 19 20 class Meta: 21 verbose_name 课程机构 22 verbose_name_plural verbose_name 23 24 def __str__(self): 25 return self.name   然后迁移数据库。   然后在机构列表接口中完善学习人数和课程数排名的逻辑 1 class OrgView(View):2 机构列表3 def get(self, request):4 # 取出所有的机构5 all_orgs CourseOrg.objects.all()6 7 # 取出所有的城市8 all_citys CityDict.objects.all()9 10 # 排名筛选(根据点击量排名) 11 hot_orgs all_orgs.order_by(-click_nums)[:3] 12 13 # 学习人数和课程数排名筛选 14 sort request.GET.get(sort, ) 15 if sort: 16 if sort students: 17 all_orgs all_orgs.order_by(-students) 18 elif sort courses: 19 all_orgs all_orgs.order_by(-course_nums) 20 21 # 城市筛选(从request中获取城市的id) 22 city_id request.GET.get(city, ) 23 if city_id: 24 all_orgs all_orgs.filter(city_idint(city_id)) 25 26 # 类别筛选(从request中获取机构类别ct) 27 category request.GET.get(ct, ) 28 if category: 29 all_orgs all_orgs.filter(categorycategory) 30 31 # 筛选完再统计数量 32 org_nums all_orgs.count() 33 34 # 分页 35 try: 36 page request.GET.get(page, 1) 37 except PageNotAnInteger: 38 page 1 39 p Paginator(all_orgs, 5, requestrequest) 40 orgs p.page(page) 41 42 return render(request, org-list.html, { 43 all_orgs: orgs, 44 all_citys: all_citys, 45 org_nums: org_nums, 46 city_id: city_id, 47 category: category, 48 hot_orgs: hot_orgs, 49 sort: sort 50 })   然后修改前端代码 5、我要学习咨询功能 5.1 我要学习咨询接口   我要学习咨询的表单这次使用ModelForm来实现首先在organization下新建form.py文件 1 from django import forms 2 from operation.models import UserAsk 3 4 5 class UserAskForm(forms.ModelForm): 6 我要学习咨询表单验证 7 class Meta: 8 model UserAsk 9 fields [name,mobile,course_name]   编写我要学习咨询的后台接口 1 class UserAskView(View):2 我要学习咨询3 def post(self, request):4 userask_form UserAskForm(request.POST)5 if userask_form.is_valid():6 # 通过ModelForm可以直接将表单中的内容保存7 user_ask userask_form.save(commitTrue)8 # 通过ajax提交给前端返回json数据9 return HttpResponse({status: success}, content_typeapplication/json) 10 else: 11 return HttpResponse({status: fail, msg: 添加出错}, content_typeapplication/json)   现在使用路由分发的方式来配置url首先删除urls.py中的org_list这个路由然后添加一级路由 1 urlpatterns [ 2 # path(org_list/, OrgView.as_view(), nameorg_list), # 机构列表 3 path(org/, include(organization.urls, namespaceorg)), # 机构列表 4 ]   然后在organization下新建urls.py文件在这个文件配置机构列表页的相关url之前删除了机构列表的url现在将机构列表和我要学习咨询的url都添加到这个文件下 1 from django.urls import path, re_path2 3 from .views import OrgView, UserAskView4 5 app_name organization6 7 urlpatterns [8 path(list/,OrgView.as_view(),nameorg_list), # 机构列表9 path(user_ask/, UserAskView.as_view(), nameuser_ask), # 我要学习咨询 10 ]   之前在首页跳转机构列表的url需要修改过来   然后在form中添加验证手机号码合法性的逻辑 1 import re2 3 from django import forms4 from operation.models import UserAsk5 6 7 class UserAskForm(forms.ModelForm):8 我要学习咨询表单验证9 class Meta: 10 model UserAsk 11 fields [name,mobile,course_name] 12 13 def clean_mobile(self): 14 验证手机号合法性 15 mobile self.cleaned_data[mobile] 16 REGEX_MOBILE ^1[358]\d{9}$|^147\d{8}$|176\d{8}$ 17 p re.compile(REGEX_MOBILE) 18 if p.match(mobile): 19 return mobile 20 else: 21 raise forms.ValidationError(手机号非法, codemobile_invalid)   我要学习咨询表单是将数据ajax提交到后台的不刷新页面所以在前端要编写script代码  转载于:https://www.cnblogs.com/Sweltering/p/9973522.html
http://www.sadfv.cn/news/285843/

相关文章:

  • 判断网站是什么系统做的电商运营公司
  • 网站群建设情况个人网站怎么做收款链接
  • 汕头建站模板源码电器网站建设目的
  • 两学一做 网站源码营销型网站建设风格设定
  • 网站做任务挣钱无锡网站制作排名
  • 网站开发思路怎么写wordpress快速部署
  • 做牛排的网站网站制作网站模板
  • 自用网站开发费用会计分录无极县城内招聘临时工
  • 电脑建网站软件深圳燃气招聘网最新招聘
  • 奔奔网站建设成都广告制作安装公司
  • 泉州企业网站维护制作百度推广费用多少钱
  • 深圳品牌网站建设服务费用佛山网站维护
  • 免费招聘网站有哪些网站运营公司哪家效果好
  • 可以搜任何网站的浏览器腾讯企点app
  • 上海哪家做网站好郑州网站营销推广公司
  • 庄行网站建设阿里云wordpress建站教程
  • 普通高等学校健康驿站建设指引php 公司网站
  • 河北省建设执业资格注册管理中心网站举报网站建设情况总结
  • 电子商务网站建设自服务器个人网站建设程序设计
  • 做网站哪便宜wordpress修改站标在哪个文件
  • 外贸最大电子元器件交易网站商贸有限公司企业简介
  • 电商网站建设建议优化教育培训
  • 设计自己的网站网站策划方案800字
  • 如何做网络营销推广服务机构嘉兴优化网站价格
  • 网站标题写什么作用是什么网站搭建好之后提示网页走丢了
  • 北京免费网站设计网站建设推广员工资
  • xml网站地图格式电子商务网站建设及推广方案
  • 泰州网站建设价格网页设计下载免费
  • 中国做网站的公司有哪些外贸会计做账流程
  • 一般网站建设公司有哪些西安网站开发高端网站开发