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

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

所以自己构思一个和NBA有关系的网站。

目前构思的基本功能是用户基本功能: 注册/登录/注销/修改密码/重置密码

博客功能:发布博客/发表评论/点赞

其他自定义功能:自定义头像 / 多功能登录(邮箱或者用户名都可登录)

这篇主要记录一下首页和球队信息的实现.
目前不涉及前端美化,只设计到功能的实现

开发环境:

Django 2.1.5 + Python 3.5 + MySQL
环境的搭建就不在这里叙述了,网上大量文章

1: 首页的简单建立

首页

在首页上,主要设计是显示30个球队的名字,并通过点击每个名字可以进入球队详细描述页面

先创建名为NBAsite的项目,并在其中首先创建mainsite和team两个app,并在setting中做好对应设置

Django NBA Web开发 - Step 1 首页建立_第1张图片
初步框架
Django NBA Web开发 - Step 1 首页建立_第2张图片
App设置

Django NBA Web开发 - Step 1 首页建立_第3张图片
数据库设置

mainsite--->对应主要模型和主页的建立
team--->对应每个单独球队页面的介绍信息,发布文章等功能

2: 建立球队信息的模型

from django.db import models

class Team(models.Model):
    team_id = models.AutoField('球队序号',primary_key=True)
    team_chinese_name = models.CharField('球队中文名称',max_length=50,default='zh_name')
    team_english_name = models.CharField('球队英文名称',max_length=50,default='en_name')
    team_conference = models.CharField('所属联盟',max_length=50,default='conference')
    team_location = models.CharField('所属城市',max_length=50,default='city')

    def __str__(self):
        return self.team_chinese_name

切记注意,如果在创建模型过程中,不是一次完成模型建立的,比如先创建了3个字段,后续又添加了2个字段,这时候Django的ORM会要求你对原来已经存在的行数进行那个字段数据的添加,或者要求你添加默认值.

所以基本上模型的每个字段里,都设置了default值.
之后我通过CSV文件向MYSQL里面导入了球队所有的信息

Django NBA Web开发 - Step 1 首页建立_第4张图片
球队信息建立

3:views视图函数及前端模板

球队信息建立完以后,需要设置views函数了,通过Team模型选出所有球队的QuerySet,这是一个可以迭代的对象.

from django.shortcuts import render
from .models import *

def index_page(request):
    team_list = Team.objects.all()
    return render(request,'index.html',{'team_list':team_list})

然后我们来看一下前端模板,我不想所有的前端模板都需要重复写所有代码,所以建立了一个base_page.html,放在项目根目录templates下面


Django NBA Web开发 - Step 1 首页建立_第5张图片
基本模板



    
    {% block title %}首页{% endblock %} - NBA Site


    首页
{% block content %} {% endblock %}

这样,网页title后缀就永远是 - NBA Site了,页面title可以自行替换
然后在body里面,每个页面都会放一个首页按钮,关于链接,后面再说.
随后,再来添加主页的内容

{% extends 'base_page.html' %}
{% block title %}球队总览页面{% endblock %}
    {% block content %}
        {% for team in team_list %}
            {{ team.team_chinese_name }}
    {% endfor %}
{% endblock %}

球队名字上的超链接暂时忽略,后面再建立.

4: URL路由配置

主页的路由配置如下,从views里面导入刚才写的函数,这样运行服务器,主页就可以看到了

python manage.py runserver

from django.urls import path
from . import views

app_name='mainsite'
urlpatterns = [
            path('',views.index_page,name='main_page')

你可能感兴趣的:(Django NBA Web开发 - Step 1 首页建立)