美文网首页
2020-05-07--Django项目6--授课机构页面的动态

2020-05-07--Django项目6--授课机构页面的动态

作者: program_white | 来源:发表于2020-05-07 16:22 被阅读0次

接下来就是对orglist.html的数据进行动态的绑定,也就是下边箭头的内容
现在的数据是在html中写死的,我们要做的是吧数据库中的数据渲染到前台页面中来。


1.在orglist.html中找到改盒子的html代码,因为要改变其中的数据

在内容的插槽中找:



找到以后留一个即可,把它折叠,做个标记
因为我们要做的是从数据库中查出来数据,在前端循环遍历就行了

2.编写视图层

打开apps/organizations/view.py:
之前为了显示orglist页面,我们编写了简单的视图,现在要对它进行一系列操作



再想想我们要显示哪些信息:



2.1首先导入模型类
from apps.organizations.models import *
2.2编写视图函数
from django.shortcuts import render

# Create your views here.
from django.views.generic import View
from apps.organizations.models import *
class OrgView(View):
    def get(self,request,*args,**kwargs):
        '''
        展示授课机构的列表页
        :param request:
        :param args:
        :param kwargs:
        :return:
        '''
        #查询所有的机构信息
        all_orgs = CourseOrg.objects.all()

        #查询机构的个数
        org_nums = all_orgs.count()

        #查询所有的城市信息
        all_citys = City.objects.all()


        return render(request, 'orglist.html',{
            'all_orgs':all_orgs,
            'org_nums':org_nums,
            'all_citys':all_citys
            })

3.去xadmin添加数据到数据库中

没有数据怎么玩
进入xadmin后台管理后先添加城市信息:北京市和沈阳市
机构信息:东软睿道和清华大学
然后我们发现我们上传的logo不显示:



但是在项目中确实出现了一个文件夹org里面有我们上传的图片:



为什么会上传到这呢?
原来我们在设计模型类的时候,把图片的上传地址设置成了:
打开organizations/models.py:

这样不好,多了不好管理。

我们初级阶段这么解决,当数据量不是特别大的时候:
在项目中新建media目录:



用于存储图片。
然后删除刚才的org文件夹。
配置media文件

打开MXOnline/settinds.py,添加:

#配置图片文件media
MEDIA_URL = '/media/'
#配置图片文件media
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

记住MEDIA_ROOT最后没有逗号

再次在xadmin中添加信息:



再次点击详细信图片还是没有传进去。
但是在项目目录中的media目录中传进去了。



先放着,最后在解决

4.对模板进行数据绑定

打开orglist.html,找到要进行数据绑定的地方:



(1)首先对机构个数进行修改:



运行:

(2)对内容进行循环显示
编写一个for循环,并把这个盒子放进去:



修改数据:

绑定了四处数据。
运行一下:

成功显示

图片加载问题

首先我们打开数据库中organizations_CoursesOrg表:
发现image的地址还是org/y/m



我们配置的media并没有生效。数据库中并没有改变
解决方案:
首先找到orglist.html的显示图片的代码:



并且修改图片的路径为media+数据库中村相互的路径。
但是再次运行图片还是没有出来。

这是因为没有设置类似权限的东西,就是不能任何人都能访问吧
解决:
1.打开settings.py:
在OPTIONS中增加:

'django.template.context_processors.media'

2.配置url

#导入url(正则表达式方式)
from django.conf.urls import url
#负责静态文件处理
from django.views.static import serve
#导入MEDIA_ROOT
from MXOnline.settings import MEDIA_ROOT
urlpatterns = [
   #配置上传文件的访问     document_root:指定文件的给根路径
    url(r'^media/(?P<path>.*)$',serve,{'document_root':MEDIA_ROOT}),
]

运行:



成功显示。
打开xadmin后台管理:



也能回显。

上下文

为什么要把media配置到setting中的上下文里?



这样的话,我们在不管在哪个页面都能访问到。
那么就可以在orglist.html使用上下文
对路径进行更改。



再次运行:

还是有的。
这样的好处就是跟哪个static文件一样,便于管理,当更改路径时,只需要更改settings中的MEDIA_ROOT就行。
提交github

相关文章

网友评论

      本文标题:2020-05-07--Django项目6--授课机构页面的动态

      本文链接:https://www.haomeiwen.com/subject/ricaghtx.html