美文网首页Django - 开发站点
Django NBA Web开发 - Step 14 球队数据信

Django NBA Web开发 - Step 14 球队数据信

作者: AllenBigBear | 来源:发表于2019-06-26 22:30 被阅读2次

之前球员名单算是添加了进去,然后想做为以后的球队/球员数据分析做一些基础。
所以去下载了一份球队数据 2018-2019 常规赛球队总数据。

1:建立模型

首先我创建了一个新的app,名字为stats.
然后在其中的models里面创建了模型Team_Season_Regular

class Team_Season_Regular(models.Model):
    id = models.AutoField(primary_key=True)
    rank = models.IntegerField('Rank',default=0,)
    team = models.CharField('Team',max_length=50)
    games = models.IntegerField('G',default=0)
    MP = models.IntegerField('MP',default=0)
    FG = models.IntegerField('FG',default=0)
    FGA = models.IntegerField('FGA',default=0)
    FGP = models.FloatField('FG%',default=0)
    ThreeP = models.IntegerField('3P',default=0)
    ThreePA = models.IntegerField('3PA',default=0)
    ThreePP = models.FloatField('3P%',default=0)
    TwoP = models.IntegerField('2P',default=0)
    TwoPA = models.IntegerField('2PA',default=0)
    TwoPP = models.FloatField('2P%',default=0)
    FT = models.IntegerField('FT',default=0)
    FTA = models.IntegerField('FTA',default=0)
    FTP = models.FloatField('FT%',default=0)
    ORB = models.IntegerField('ORB',default=0)
    DRB = models.IntegerField('DRB',default=0)
    TRB = models.IntegerField('TRB',default=0)
    AST = models.IntegerField('AST',default=0)
    STL = models.IntegerField('STL',default=0)
    BLK = models.IntegerField('BLK',default=0)
    TOV = models.IntegerField('TOV',default=0)
    PF = models.IntegerField('PF',default=0)
    PTS = models.IntegerField('PTS',default=0)
    Season = models.IntegerField('Season',default=0)

2:创建url路由

app_name = 'stats'
urlpatterns=[
            path('team_regular',team_regular,name='team_regular'),
]

3:创建views函数

def team_regular(request,**kwargs):

    #取出对象的值得集合,对象是一个valuequeryset
    teams = Team_Season_Regular.objects.values()

    #遍历每个实例对象
    for i in teams:
        #将几个命中率的数据转换成百分比
        i['FGP'] = '{:.2f}%'.format(i['FGP']*100)
        i['ThreePP'] = '{:.2f}%'.format(i['ThreePP']*100)
        i['TwoPP'] = '{:.2f}%'.format(i['TwoPP'] * 100)
        i['FTP'] = '{:.2f}%'.format(i['FTP'] * 100)

    #取得模型的字段名提供给前端,并忽略第一个和最后一个
    field_names = Team_Season_Regular._meta.fields[1:-1]
    return render(request,'team_regular.html',locals())

其中teams是一个valuequeryset的结果,里面是一个列表,每个元素是一个一个实例对象的所有值,而且这个元素是一个字典形式,键为字段名值为实例数值.
接着用i来遍历teams,并通过访问键来修改值得内容,因为原始数据里面,各项投篮命中率都是小于1的小数,而我想在面板上显示成百分比.

3:前端渲染

{% block content %}

<div id="table_regular_whole_area">
    <table id="table_regular" class="table-striped">
            <tr id="table_head_area">
                {% for col in field_names %}
                    <td class ="team_regular_table">{{ col.verbose_name }}</td>
                {% endfor %}
            </tr>
                    <!--遍历出每个球队实例-->
                    {% for team in teams %}
                    <!--每个实例创建一个row-->
                    <tr>
                        <!--取出每个实例字典中的"值"-->
                        {% for value in team.values %}
                            <!--去除第一个和最后一个数值,不需要id和赛季信息-->
                            {% if forloop.first or forloop.last %}
                            {% else %}
                                <!--横向创建出所有数据-->
                                <td class="team_regular_table">
                                    {{ value }}
                                </td>
                            {% endif %}
                        {% endfor %}
                    </tr>
                    {% endfor %}
    </table>
</div>
{% endblock %}

4:前端优化

其实在做前端的时候本来想无脑套bootstrap的,但是套了以后发现效果并不是很好,所以自己又单独写了一些css,挂在外面单独的文件里。
其中最主要的一个是给table加上了layout是fixed的属性。
这样的效果是什么?
就是表格的栅格,不会因为单元格内部的内容长短不一致而扭曲了。
而是会非常整齐的呈现表格了。

#table_regular {
  table-layout:fixed;
}

5:呈现效果

最终效果

参考资料:
https://www.basketball-reference.com/

相关文章

  • Django NBA Web开发 - Step 14 球队数据信

    之前球员名单算是添加了进去,然后想做为以后的球队/球员数据分析做一些基础。所以去下载了一份球队数据 2018-20...

  • Django NBA Web开发 - Step 2 球队页面

    这一篇主要记录球队页面的建立及用户系统的建立 接上一篇,主页显示的是各个球队的名字,后续想要做到的是点击每个球队名...

  • Django NBA Web开发 - Step 16 Djang

    内容基本上开发差不多了,最后一步进行服务器的部署.后续添加:本来想一篇把这个内容写完的,结果踩了无数个坑,之前部署...

  • Django NBA Web开发 - Step 17 Djang

    上一篇里面反常规地记录了只用django的开发服务器来接受外部的访问。这篇开始要开始正常的部署服务器了,区别就是要...

  • Django NBA Web开发 - Step 7 文章分页

    发布文章功能做好了,统一显示在每个球队页面的上面不过如果时间长了以后,关于球队的文章会越来越多,所以势必需要用到分...

  • Django NBA Web开发 - Step 10 头像上传

    作为现在社交网站最基本的功能,头像上传必不可少。这里就简单写一下我的实现 1:模型的建立 上传文件的字段,叫做Fi...

  • Django NBA Web开发 - Step 9 添加Ajax

    断断续续了点时间,下班乱七八糟事情太多,今天总算继续做点赞的功能,并把原来创建在测试区域的功能移植到项目中去了。前...

  • Django NBA Web开发 - Step 13 球员名单

    前面球队页面的内容基本做完了,接下来准备做球员信息的页面。中间一段时间在看爬虫,想通过做一个简单爬虫去爬取所有球员...

  • Django NBA Web开发 - Step 1 首页建立

    自己之前用Flask撸过网站,现在重新学习Django框架,网上博客教程不少,不想完全模仿博客教程。 所以自己构思...

  • Django NBA Web开发 - Step 3 用户系统

    继续网站的开发,这篇会说到用户系统的建立,包括注册账号,登录,注销登录,重置密码,修改密码等。不过这篇文章内容不会...

网友评论

    本文标题:Django NBA Web开发 - Step 14 球队数据信

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