美文网首页Django - 开发站点
Django NBA Web开发 - Step 13 球员名单

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

作者: AllenBigBear | 来源:发表于2019-05-31 16:48 被阅读0次

前面球队页面的内容基本做完了,接下来准备做球员信息的页面。
中间一段时间在看爬虫,想通过做一个简单爬虫去爬取所有球员信息,以做到实时更新,后来看了一半暂时先放弃了,一个是球员的变动不会太频繁,不会像比赛信息那样日常有更新,另外一个球员总数也就这点,而且目前是做练习,没必要和实际一模一样,所以就去下载了个2019年的球员csv文件导入进数据库.

1: 创建球员模型

class Player(models.Model):

    player_id = models.AutoField('球员序号',primary_key=True)
    first_name = models.CharField('名',max_length=50)
    last_name = models.CharField('姓',max_length=50)
    position = models.CharField('位置',max_length=30)
    height = models.CharField('身高',max_length=30)
    weight = models.CharField('体重',max_length=30)
    team = models.CharField('球队',max_length=30)
    university = models.CharField('大学',max_length=50)

    def __str__(self):
        return self.first_name+' '+self.last_name

我在这里并没有设置外键,因为我在后面的views函数里直接将Team模型的队名和Player模型里面的球队字段做判断了。

2: 添加url

app_name='team'
urlpatterns=[
            ......
            path('roster/<int:team_id>',team_roster,name='team_roster'),

3: 设置views函数

def team_roster(request,team_id):
    team_name = Team.objects.get(team_id=team_id).team_english_name  
    roster = Player.objects.filter(team=team_name)
    print(team_name)
    return render(request,'team_roster.html',locals())

上面设置变量时,我已经通过team_name和roster比较是否相同来建立连接了
PS: 这一步的前提是,Team模型里的球队名和Player里面的球队名是一模一样的

我们来看一下效果图,效果还没调整,数据暂时没问题

更新球队页面链接 单个球队阵容

4: 添加球员总览页面

单个球队页面做好了,还需要加一个所有球员的总览的页面

还是先添加一下views函数

from django.core.paginator import Paginator

def all_players(request):
    players = Player.objects.all().order_by('first_name')
    paginator = Paginator(players,15)
    page = request.GET.get('page')
    pages = paginator.get_page(page)
    return render(request,'players.html',locals())

为了避免一整页显示几百个球员,我选择对球员总数进行分页显示,每页显示15个

增加一个URL

app_name='team'
urlpatterns=[
            .........
            path('all_players',all_players,name='all_players'),
]

5: 前端渲染

来将前端页面设置一下
首先是单个球队的球员页面

<div class="container">
<table>
    <tr class="container-fluid">
        <th class="col">Frist Name</th>
        <th class="col">Last Name</th>
        <th class="col">Position</th>
        <th class="col">Weight</th>
        <th class="col">Height</th>
        <th class="col">Team</th>
        <th class="col">University</th>
    </tr>

    {% for player in roster %}
    <tr class="container-fluid">
        <td class="col">{{player.first_name}}</td>
        <td class="col">{{player.last_name}}</td>
        <td class="col">{{player.position}}</td>
        <td class="col">{{player.weight}}</td>
        <td class="col">{{player.height}}</td>
        <td class="col">{{player.team}}</td>
        <td class="col">{{player.university}}</td>
    </tr>
    {% endfor %}
</table>
</div>

之后再渲染一下所有球员的总的页面显示,带分页功能的

    <div class="container">
            {% for p in pages %}
            <ul>{{p}}</ul>
            {% endfor %}

        {% if pages.has_previous %}
            <a href="?page=1">&laquo;first</a>
            <a href="?page={{pages.previous_page_number}}">previous</a>
        {% endif %}
            <span>Page {{pages.number}}of{{pages.paginator.num_pages}}</span>
        {% if pages.has_next %}
            <a href="?page={{ pages.next_page_number }}">next</a>
            <a href="?page={{ pages.paginator.num_pages }}">last &raquo;</a>
        {% endif %}
    </div>

来看一下效果图

球员总览

球员的添加至此基本功能做完,后期再加入每个球员的头像和详细数据及其他分析等功能.

相关文章

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

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

  • 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 1 首页建立

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

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

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

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

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

  • Django NBA Web开发 - Step 6 发布文章

    有了用户,有了关注系统,接下来,在自己喜欢的球队页面下面,发布文章,也是一个日常使用频率很高的功能。 不想很简单地...

网友评论

    本文标题:Django NBA Web开发 - Step 13 球员名单

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