Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Django+Pyecharts项目实战开发

Django+Pyecharts项目实战开发

作者头像
Baige
发布于 2022-03-22 07:18:57
发布于 2022-03-22 07:18:57
41700
代码可运行
举报
文章被收录于专栏:世荣的博客世荣的博客
运行总次数:0
代码可运行

关于记录一些报错问题

1.SyntaxError: Non-ASCII character 'xe9' in file /Users/macbook/Desktop/back_end/test.py on line 18, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details 解析原因: SyntaxError: Non-ASCII character 'xe9' in file意思是说,在文件中存在非ASCII字符; ASCII是8位即一个字符,一共256个字符,随着计算机的发展,现在已经用到2个或者4个字符; 最重要的原因就是文件中有中文 解决办法: 文件头部填入:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# -*- coding: cp936 -*-
或者
# -*- coding: utf-8 -*

2.用python request腾讯新闻网的内容 报错:('Connection aborted.', ConnectionResetError(54, 'Connection reset by peer')) 分析: 之前我的Homebrew不太合适,换了一下,然后可能把OpenSSL没有重装,重装测试之后还是不行,既然不是这里的问题,那应该就是其他地方的问题,于是最后找了好久,给我另一个(项目正在使用的Python版本)安装了三个库,于是测试成功了,这里就很开心。 解决: 在安装requests库时,它会跳过一些SSL/Https连接所需的可选安全包('pyOpenSSL','ndg-httpsclient'和'pyasn1')。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pip install pyOpenSSL
pip install ndg-httpsclient
pip install pyasn1

这里先上一个demo:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# -*- coding: utf-8 -*
import json
import requests
import pandas as pd
from pyecharts.charts import *
from pyecharts import options as opts
from pyecharts.commons.utils import JsCode
from pyecharts.globals import ThemeType, ChartType

reponse = requests.get(
'https://view.inews.qq.com/g2/getOnsInfo?name=disease_h5').json()
data = json.loads(reponse['data'])
province = []
confirm = []
for item in data['areaTree'][0]['children']:
    province.append(item['name'])
    confirm.append(item['total']['confirm'])
china_data = pd.DataFrame({"province": province, "confirm": confirm})

dicts_all = {'黑龙江': [127.9688, 45.368], '上海': [121.4648, 31.2891],
             '内蒙古': [110.3467, 41.4899], '吉林': [125.8154, 44.2584],
             '辽宁': [123.1238, 42.1216], '河北': [114.4995, 38.1006],
             '天津': [117.4219, 39.4189], '山西': [112.3352, 37.9413],
             '陕西': [109.1162, 34.2004], '甘肃': [103.5901, 36.3043],
             '宁夏': [106.3586, 38.1775], '青海': [101.4038, 36.8207],
             '新疆': [87.9236, 43.5883], '西藏': [91.11, 29.97],
             '四川': [103.9526, 30.7617], '重庆': [108.384366, 30.439702],
             '山东': [117.1582, 36.8701], '河南': [113.4668, 34.6234],
             '江苏': [118.8062, 31.9208], '安徽': [117.29, 32.0581],
             '湖北': [114.3896, 30.6628], '浙江': [119.5313, 29.8773],
             '福建': [119.4543, 25.9222], '江西': [116.0046, 28.6633],
             '湖南': [113.0823, 28.2568], '贵州': [106.6992, 26.7682],
             '广西': [108.479, 23.1152], '海南': [110.3893, 19.8516],
             '广东': [113.28064, 23.125177], '北京': [116.405289, 39.904987],
             '云南': [102.71225, 25.040609], '香港': [114.165460, 22.275340],
             '澳门': [113.549130, 22.198750], '台湾': [121.5200760, 25.0307240]}

for item in [list(z) for z in zip(china_data['province'], 
china_data['confirm'])]:
    dicts_all[item[0]].append(item[1])

(Map3D()
 .add_schema(
    itemstyle_opts=opts.ItemStyleOpts(
        color="rgb(5,101,123)",
        opacity=1,
        border_width=0.8,
        border_color="rgb(62,215,213)"),
    map3d_label=opts.Map3DLabelOpts(
        is_show=False,
        formatter=JsCode(
            "function(data){return data.name + " " + data.value[2];}")),
    emphasis_label_opts=opts.LabelOpts(
        is_show=False,
        color="#fff",
        font_size=10,
        background_color="rgba(0,23,11,0)"),
    light_opts=opts.Map3DLightOpts(
        main_color="#fff",
        main_intensity=1.2,
        main_shadow_quality="high",
        is_main_shadow=False,
        main_beta=10,
        ambient_intensity=0.3))
 .add(
    series_name="bar3D",
    data_pair=list(zip(list(dicts_all.keys()), list(dicts_all.values()))),
    type_=ChartType.BAR3D,
    bar_size=1,
    shading="lambert",
    label_opts=opts.LabelOpts(
        is_show=True,
        formatter=JsCode(
            "function(data){return data.name + ' ' + data.value[2];}")))
 .set_global_opts(title_opts=opts.TitleOpts(title="COVID-19全国疫情分布图")))
.render("render.html")

demo测试成功:

这里创建好项目之后,先修改设置吧。

1.settings.py

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#ALLOWED_HOSTS是一个字符串列表,代表了这个Django网站可以服务的主机名或域名。
这是为了阻止HTTP Host头攻击而采用的一种安全措施

ALLOWED_HOSTS = ['xxx.xxx.xxx.xxx','127.0.0.1']
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'app.apps.AppConfig', #添加子应用
]

# 数据库设置,默认数据库改为MySQL数据库
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'HOST': 'xxx.xxx.xxx.xxx',
        'PORT': '3306',
        'USER': 'root',
        'PASSWORD': '123',
        'NAME': 'crawler',
    }
}
LANGUAGE_CODE = 'zh-Hans'#语言

TIME_ZONE = 'Asia/Shanghai'#时区

#静态文件   在static添加的任何静态文件都可以使用网址/static/文件在static中的路径来访问了
STATIC_URL = '/static/'
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static'),
]

2.server/server/urls.py

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from django.contrib import admin
from django.urls import path
urlpatterns = [
    path('admin/', admin.site.urls),
]

3.server/app/urls.py

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from django.conf.urls import url
from app.views import index
app_name = 'info'
urlpatterns = [
    url(r'^$',index,name = 'index'),
    url(r'^index/$',index,name = 'index'),# 每个都返回到views下index实现业务逻辑
]

4.设置爬虫爬取的网站(之前测试过,因此这里继续爬取腾讯网)

在app子应用下创建一个名为‘Crawler.py’爬虫工具文件,里面封装了爬虫方法。

5.创建Models中的class对应数据库中的表,属性对应字段。

(1)定义模型类

在models.py中定义模型类,继承自models.Model

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class foreign_data(models.Model):
    date = models.DateField(verbose_name='更新时间')
    name = models.CharField(max_length=20,verbose_name='国家')
    confirm = models.IntegerField(verbose_name='确认总数')
    confirmAdd = models.IntegerField(verbose_name='新增确诊人数')
    heal = models.IntegerField(verbose_name='治愈人数')
    dead = models.IntegerField(verbose_name='死亡人数')
    nowConfirm = models.IntegerField(verbose_name='现存确诊')

    class Meta:
        #改表名
        db_table = 'foreign_data'
        #修改后台admin对的显示信息的配置
        verbose_name_plural = '国外疫情数据(每个国家不同日期的数据)'

    def __str__(self):
        #后台显示
        return self.name +':' + str(self.date)

class globalStatic(models.Model):
    lastUpdateTime = models.DateTimeField(verbose_name='更新时间')
    nowConfirm = models.IntegerField(verbose_name='现存确诊')
    confirm = models.IntegerField(verbose_name='确认总数')
    heal = models.IntegerField( verbose_name='治愈人数')
    dead = models.IntegerField(verbose_name='死亡人数')
    nowConfirmAdd = models.IntegerField(verbose_name='新增现存确诊人数')
    confirmAdd = models.IntegerField(verbose_name='新增确诊人数')
    healAdd = models.IntegerField(verbose_name='新增治愈人数')
    deadAdd = models.IntegerField(verbose_name='新增死亡人数')

    class Meta:
        # 改表名
        db_table = 'globalStatic'
        # 修改后台admin对的显示信息的配置
        verbose_name_plural = '全球疫情总数据'

    def __str__(self):
        return '更新时间'+str(self.lastUpdateTime)

class USA_history_confirm_data(models.Model):
    date = models.DateField(verbose_name='日期')
    confirm = models.IntegerField(verbose_name='确认数')

    class Meta:
        # 改表名
        db_table = 'USA_history_confirm_data'
        # 修改后台admin对的显示信息的配置
        verbose_name_plural = '美国历史疫情数据'

    def __str__(self):
        return '日期:'+str(self.date)

# 全球疫情实体类
class usa_global_all_data(models.Model):
    date = models.DateField(verbose_name='日期')
    usaconfirm = models.IntegerField(verbose_name='美国确诊')
    confirm = models.IntegerField(verbose_name='全球确诊')
    dead = models.IntegerField(verbose_name='全球死亡')
    heal = models.IntegerField(verbose_name='全球治愈')
    confirmAdd = models.IntegerField(verbose_name='全球新增')
    class Meta:
        # 改表名
        db_table = 'usa_global_all_data'
        # 修改后台admin对的显示信息的配置
        verbose_name_plural = '美国和全球历史疫情数据'

    def __str__(self):
        return '日期:'+str(self.date)

(2)模型迁移(建表)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
生成迁移文件:根据模型类生成创建表的语句
python manage.py makemigrations
执行迁移:根据第一步生成的语句在数据库中创建表
python manage.py migrate

6.实现数据库操作方法

在app子应用下创建一个名为‘mysqldb.py’数据库操作工具文件,里面封装了数据库操作方法。

7.创建HTML页面

在templates文件夹中创建一个名为'index'的html文件

8.前后端交互业务逻辑部分views.py

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022 年 01 月,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
超越村后端开发(2:新建models.py+xadmin的引入)
1.新建Model 1.users数据 1.在apps/users/models.py中: from datetime import datetime from django.db import models from django.contrib.auth.models import AbstractUser # Create your models here. class UserProfile(AbstractUser): """ 管理员 """ name=mod
玩蛇的胖纸
2019/04/09
5100
超越村后端开发(2:新建models.py+xadmin的引入)
Django+xadmin打造在线教育平台(一)
代码 github下载  一、前言 代码下载:  开发环境:     python:  3.6.4     Django: 2.0.2 后台管理:xadmin 1.1.项目介绍 系统概括: 系统具有完整的用户登录注册以及找回密码功能,拥有完整个人中心。 个人中心: 修改头像,修改密码,修改邮箱,可以看到我的课程以及我的收藏。可以删除收藏,我的消息。 导航栏: 公开课,授课讲师,授课机构,全局搜索。 点击公开课–> 课程列表,排序-搜索。热门课程推荐,课程的分页。 点击课程–> 课程详情页中对课程进行收藏,
zhang_derek
2018/04/11
5.8K1
Django+xadmin打造在线教育平台(一)
Django开发在线教育平台--学习整理(一)
首先,打开cmd,cd到存放django项目的文件夹,创建一个新工程(也可以用虚拟环境virtualenv):
SimonDM
2018/05/09
3K4
Django开发在线教育平台--学习整理(一)
Django REST framework+Vue 打造生鲜超市(二)
三、Models设计 3.1.项目初始化 (1)进虚拟环境下安装 django2.0.2 djangorestframework和相关依赖mark,filter pillow  图片处理 pip install djangorestframework pip install -i https://pypi.douban.com/simple django==2.0.2 pip install markdown pip install django-filter pip install pillow
zhang_derek
2018/04/11
2.2K0
Django REST framework+Vue 打造生鲜超市(二)
Vue+Django2.0 restframework打造前后端分离的生鲜电商项目(1)
  新版的pycharm很贴心的让每一个新的项目,都自动会在一个虚拟环境中,放心的新建项目就可以了,不用考虑虚拟环境的事儿了
玩蛇的胖纸
2018/10/10
2K0
Vue+Django2.0 restframework打造前后端分离的生鲜电商项目(1)
Django实战-生鲜电商-模型层
经过前几小节的介绍,ORM 的基础应用,如何把一张数据表建好,方便各张表之间的数据处理。从第一张用户表开始,就意味着整个站点的数据表能有多大的扩展能力。
小团子
2019/07/18
5690
Django实战-生鲜电商-模型层
零基础使用Django2.0.1打造在线教育网站(八):数据库字段的定义(下)
努力与运动兼备~有任何问题可以加我好友或者关注微信公众号,欢迎交流,我们一起进步!
啃饼思录
2018/08/21
8740
django_mysql_配置
1. 创建一个新的应用,为booktest,在models.py 文件中定义模型类,然后去setting注册应用
py3study
2020/01/16
1.6K0
越光后端开发——ygapi(2.新建Model)
1.新建Model 1.users数据 1.在apps/users/models.py中: from datetime import datetime from django.db import models from django.contrib.auth.models import AbstractUser # Create your models here. class UserProfile(AbstractUser): """ 管理员 """ name=mod
玩蛇的胖纸
2019/03/15
3700
越光后端开发——ygapi(2.新建Model)
2.Models设计
1.Models设计: 1.重构用户表: 1.在users/models.py中: from django.db import models from django.contrib.auth.models import AbstractUser from datetime import datetime # Create your models here. class UserProfile(AbstractUser): """ 用户表 """ token = model
玩蛇的胖纸
2020/05/18
4030
day100-Exception继承定义错误信息&结算接口&结算数据结构
1.Exception的继承 # 自定义继承类继承 Exception class MyException(Exception): def __init__(self, code, msg): self.code = code self.msg = msg # 自定义相应信息 class BaseResponse: def __init__(self): self.code = '' self.error = ''
少年包青菜
2020/03/26
6960
Django教程 —— 初步完善图书管理系统
我们写项目写东西的时候都要养成良好的习惯,不要一来就上手写代码,我们先要进行初步分析和设计,让大脑有整体的概念,需要用到什么技术实现什么效果。这个习惯也不能学的太死,我们要活学活用,学会变通。有时候只是简单的学习一下,或者简单的实现一个小功能。大脑已经可以大概掌握,就无须设计与分析。
忆想不到的晖
2020/11/06
1K0
Django+Vue开发生鲜电商平台之3.数据模型设计和资源导入
Github和Gitee代码同步更新: https://github.com/corleytd/Django_Fresh_Ecommerce; https://gitee.com/Python_Full_Stack/Django_Fresh_Ecommerce。
cutercorley
2020/07/23
1.9K0
Django+Vue开发生鲜电商平台之3.数据模型设计和资源导入
国庆续写商品管理系统(二)
国庆有点懒散更新的内容不多,大家国庆快乐 一.做的事情 上次写到点我查看 设置中国时区 修改表单存储位置 设计商品相关的表,主要是总库存,退货,进货,销售 优化登入验证码,去除1iO0这些让人难以区分的内容 重新设计文件目录 二.配置相关 setting.py """ Django settings for drf_test project. Generated by 'django-admin startproject' using Django 1.11.22. For more informati
小小咸鱼YwY
2020/06/19
1.1K0
测试开发进阶(三十四)
数据库模型图 创建app 根据上面的数据库设计,创建9个app configures debugtalks envs interfaces projects reports testsuits tes
zx钟
2019/11/07
5000
测试开发进阶(三十四)
python测试开发django-35.xadmin注册表信息
xadmin后台如果要对表的内容增删改查,跟之前的admin.py文件里面写注册表信息一样,需在admin.py同一级目录新建一个adminx.py的文件。 然后在adminx.py文件控制页面上需显示的内容。
上海-悠悠
2019/05/06
5520
python测试开发django-35.xadmin注册表信息
BBS项目(二)
目录 BBS项目(二) ORM 创建相关表 表模型 修改admin样式 Simple-UI 注册表添加数据 注册forms类编写 注册功能前端搭建 头像实时显示功能实现 BBS项目(二) 可以在本地写或虚拟环境 添加虚拟环境 如果虚拟环境启动报错:解决 query = query.decode(errors=‘replace‘) AttributeError: ‘str‘ object has no attribute ‘decode‘ 解决办法 query = query.decode(erro
HammerZe
2022/03/24
7860
BBS项目(二)
Django Helloworld
【历史故事】似乎Python从诞生起就是各种传奇,Django 从一个非常实际的需求成长而来:World Web 是一家新闻网站,负责在新闻截止期限内建立密集的 Web 应用程序。 在快节奏的新闻编辑室,World Online 往往需要几个小时内将一个复杂的 Web 应用程序从概念推向发布上线。
vanguard
2020/03/04
1.1K0
django admin 对 list_filter 排序
1. https://cloud.tencent.com/developer/ask/34273
卓越笔记
2023/02/18
4930
django  admin 对 list_filter 排序
【愚公系列】2022年01月 Django商城项目19-商品数据表的设计
在电商项目里面为了准确的描述商品的区别,我们抽象出来两个概念,Spu和Sku这两个概念。
愚公搬代码
2022/01/26
4550
【愚公系列】2022年01月 Django商城项目19-商品数据表的设计
推荐阅读
相关推荐
超越村后端开发(2:新建models.py+xadmin的引入)
更多 >
LV.0
这个人很懒,什么都没有留下~
作者相关精选
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验