python django做网页_python利用Django搭建第一个网页

本文介绍了如何使用Python的Django框架搭建数据可视化网页。在缺乏BI平台的情况下,Django能承载数据产品的功能,实现数据的可视化。文章详细阐述了搭建Django所需的知识储备,包括Python基础、数据库知识、HTML、JS和服务器部署,并提供了详细的搭建步骤,包括环境配置、项目和APP创建、数据库配置、页面搭建以及美化和远程访问。在过程中还解决了一些常见错误,如mysql版本和编码问题。
部署运行你感兴趣的模型镜像

为什么要用Django

日常业务过程里面,我们组织各种各样的分析,会经历接收需求、采集数据到分析结果呈现的流程,当固定模板形成周期性报告时,Excel/PPT已经不能满足自动更新的需求。在缺乏完善的BI平台情况下,Django能够承载部分数据产品的功能,实现数据的可视化呈现。

搭建Django需要预备哪些知识

搭建django需要具备一些一定的知识储备,以及足够多的耐心。

首先,最最最大的前提是,你必须要了解python,并且能够运用对数据进行操作处理。 然后需要了解一部分数据库方面的使用技巧,知道怎么写SQL。 再之后需要了解一部分HTML的语法规则,能够区分基础的标签类型。 如果要实现网页数据的自动更新,可能还需要了解一下js、ajax方面的知识。 最后,要实现供其他人远程访问,就需要了解服务器以及部署,完成任务的定时运行。

Django的搭建路线

1. django安装和环境变量配置

python安装django相关模块

cmd> pip install django

cmd> # windows安装完成后,添加环境变量:

cmd> # C:\Python37\Lib\site-packages\django\bin;

cmd> # 如果是通过anaconda安装,环境变量会自动添加;

cmd> # linux/mac可以不考虑环境变量的设置;

2. python启动django

2.1. 创建第一个项目

打开 Linux 或 MacOS 的 Terminal (终端)直接在 终端中输入这些命令(不是 python 的 shell中)

如果是 windows 用 cmd(开始 搜索 cmd 或者快捷键win+R,输入cmd 直接在 cmd上操作。

cmd> django-admin.py startproject project_name

cmd> # 注意:在windows上如果启动错误,尝试用django-admin代替django-admin.py试试;

cmd>

cmd> django-admin startproject zwl

cmd> # project_name为自定义,示例项目为zwl

2.2. 创建第一个APP

cmd> cd zwl

cmd> # 进入项目文件夹,并创建第一个应用

zwl> django-admin startapp supcon

zwl> tree /f

zwl> # 如果是在mac或者linux需要预装tree,且中文目录为tree -N

zwl> # linux下安装tree的命令,sudo apt-get install tree

此时,在工作目录下的文件结构如下图所示

zwl> # 此时一个django的项目就已经搭建好了,查看是否成功

zwl> python manage.py runserver

zwl> # 在运行时可以添加自定义端口,如python manage.py runserver 8008

zwl> # 通过浏览器访问127.0.0.1:8000,可以查看结果

zwl> # 中断快捷键:ctrl+c

浏览器访问结果

在启动时,由于版本的原因可能会出现以下两个错误 - 错误1:mysql中base.py脚本vesion错误

cmd> python manage.py makemigrations

django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.3.

解决方案:

D:\Program Files\Python\lib\site-packages\django\db\backends\mysql\base.py

中的两句注释掉

# if version < (1, 3, 13):

# raise ImproperlyConfigured('mysqlclient 1.3.13 or newer is required; you have %s.' % Database.__version__)错误2:mysql中operations.py脚本编码错误

cmd> python manage.py makemigrations

AttributeError: 'str' object has no attribute 'decode'

解决方案:

D:\Program Files\Python\lib\site-packages\django\db\backends\mysql\operations.py

中的If判断注释掉

# if query is not None:

# query = query.decode(errors='replace')

3. 调整项目中关于数据库的配置

3.1. 在mysql中建库

cmd> net start mysql

cmd> # 如果mysql没有启动,则需要提前启动

cmd> mysql -u root -p

cmd> Enter password:

mysql> show databases;

mysql> # 查看已有数据库,可直接利用,如果没有,则需要创建

mysql> CREATE DATABASE supcon DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

mysql> # 建库一定要改编码为utf8!!!否则后续使用中文编码可能会报错

mysql> # 如果建库时没有设定编码集,可以通过下面语句进行更改

mysql> show variables like '%char%';

mysql> #查看字符集编码

mysql> alter database character set utf8mb4;

mysql> # 例:alter database db_user character set utf8mb4;

mysql> alter table character set utf8mb4;

mysql> # 例:alter table user character set utf8mb4;

mysql> ALTER TABLE MODIFY COLUMN CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

mysql> # 例:ALTER TABLE comment MODIFY COLUMN content VARCHAR(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

3.2. 设置settings中的数据库

在项目文件夹中找到settings.py文件,打开编辑

zwl/settings.py初始化内容:

DATABASES = {

'default': {

'ENGINE': 'django.db.backends.sqlite3',

'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),

}

}

zwl/settings.py修改为:

DATABASES = {

'default': {

'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2','mysql', 'sqlite3' or 'oracle'

'NAME': 'supcon', # Your db name, Or path to database file if using sqlite3

'USER': 'root', # Your db user name, Not used with sqlite3

'PASSWORD': '', # Your db password, Not used with sqlite3

'HOST': '127.0.0.1', # Your db host, set to empty string('') for default for localhost, Not used with sqlite3

'PORT': '3306' # Your db port, set to empty string('') for default, Not used with sqlite3

}

}

在项目文件夹中找到init.py文件,初始化没有内容,需要添加下面两句,调用pymysql包,使django和数据库能够进行ORM操作。

zwl/init.py文件中添加:

import pymysql

pymysql.install_as_MySQLdb()

在ORM框架中,它帮我们把类和数据表进行了一个映射,可以让我们通过类和类对象就能操作它所对应的表格中的数据。用面向对象的方式去操作数据库的创建表、增加、修改、删除、查询等操作。把面向对象中的类和数据库表一一对应,通过操作类和对象,对数据表实现数据操作,不需要写sql,由orm框架生成。

3.2. 通过models关联数据库表

在配置完settings.py后,进入到应用文件夹内找到models.py文件,打开编辑,添加创建第一个模型

supcon/models.py中添加

class BiPerson(models.Model):

name = models.CharField(max_length=64, blank=True, null=True)

person_id = models.IntegerField(blank=True, null=True)

class Meta:

managed = False

db_table = 'bi_person'

编辑完成后,进入终端/cmd窗口下执行数据迁移,实现python类和mysql数据库表之间的映射

zwl> python manage.py makemigrations

zwl> # 执行数据迁移

zwl> python magage.py migrate

zwl> # 同步表结构

此时,在mysql中会创建一张bi_person的表,可通过Navicat进行查看

3.3. 如何获取数据库中的表数据

前面的操作都是在终端/cmd中进行操作的,在查看数据库数据时,需要进入到Python的ide中执行下面的语句

# python console

# 导入相关的模块、工具

from BIDashboard.models import BiPerson

from django.core.serializers import serialize

# 可查看表相关数据,格式为queryset

BiPerson.objects.all().values()

Out[1]:

# 如果需要进行字段筛选,可以在values中取出对应的字段

BiPerson.objects.all().values('id','name')

Out[2]:

# 可通过serialize讲queryset转换成为json格式

mapdata=BiPerson.objects.all()

mapdata_json=serialize("json", mapdata,ensure_ascii=False)

Out[3]: '[{"model": "BIDashboard.biperson", "pk": 1, "fields": {"name": "夏天", "person_id": 1}}, {"model": "BIDashboard.biperson", "pk": 2, "fields": {"name": "西索", "person_id": 2}}]'

另外一种获取数据的方式是直接利用pymysql通过sql的方式进行查询

# python console

from django.db import connection

sql='select * from bi_person'

cur = connection.cursor()

cur.execute(sql)

cur.fetchall()

Out[4]:

((1, '夏天', 1),

(2, '西索', 2),

(3, '蜗牛', 3)

4. 搭建属于自己的第一个页面

经过前面3个步骤,基本的过程已经配置完成,接下来开始搭建第一个页面。在这之前,结构树中只有项目(zwl)和应用(supcon)两层文件夹,还需要创建一个templates文件夹,可以直接创建也可以通过命令创建

zwl>mkdir templates

zwl>tree /f # linux是tree -N

4.1. 编写自己的第一个网页

进入到templates文件夹下创建一个HTML5页面:first.html,编辑

templates/first.html

示例网站

这是我的第一个网页

4.2. 建立视图和html的映射

进入到supcon/views.py中创建一个类,通过render连接templates中的HTML5文件

supcon/views.py

from django.shortcuts import render

# Create your views here.

from django.http import HttpResponse,JsonResponse

from supcon.models import BiPerson

def test(request):

return render(request,'first.html')

4.3. 配置网站路由

在zwl/urls.py中进行编辑,通过urlpatterns中的path对访问路径进行指定

zwl/urls.py

from django.contrib import admin

from django.conf.urls import url

from zwl import settings

from supcon import views

urlpatterns = [

path('admin/', admin.site.urls),

path('test/',views.test),

]

4.4. 查看网页

进入终端/cmd,启动服务

zwl> python manage.py runserver

zwl> # 在运行时可以添加自定义端口,如python manage.py runserver 8008

zwl> # 通过浏览器访问127.0.0.1:8000,可以查看结果

zwl> # 中断操作快捷键:ctrl+c

在浏览器中访问:127.0.0.1:8000/test,即可查看页面

4.5. 在网页中载入数据

此时网页中的信息是人为写上去的,接下来我们通过连接数据库,从创建的bi_person表中读出数据,并以表格的形式呈现出来。在views视图中连接数据库,并向HTML模板传递queryset数据

supcon/views.py

from django.shortcuts import render

# Create your views here.

from django.http import HttpResponse,JsonResponse

from supcon.models import BiPerson

def index(request):

# 取出数据库中的所有数据

mydata=BiPerson.objects.all()

# 需要传递给HTML5的对象

context={'data':mydata}

return render(request,'first.html',context)在templates模板中,HTML5接收数据,并循环写出

templates/first.html

示例网站

这是我的第一个网页

person_idname

{% for item in mydata %}

{{ item.person_id }}{{ item.name }}

{% endfor %}

进入终端/cmd,启动服务

zwl> python manage.py runserver

zwl> # 在运行时可以添加自定义端口,如python manage.py runserver 8008

zwl> # 通过浏览器访问127.0.0.1:8000,可以查看结果

zwl> # 中断操作快捷键:ctrl+c在浏览器中访问:127.0.0.1:8000/test,即可查看页面此时,一个基础的网页就已经形成了,剩下的就是如何美化,以及服务部署

5. 美化页面引入bootstrap插件

引入css样式

引入js文件

6. 实现远程访问

6.1. 设置IP局域网内可访问

进入zwl/settings.py中找到ALLOWED_HOSTS,对原有语句进行注释,并修改为"*"

zwl/settings.py

# ALLOWED_HOSTS = []

ALLOWED_HOSTS ="*"进入终端/cmd,启动服务时制定IP为0.0.0.0:8000

zwl> python manage.py runserver 0.0.0.0:8000

zwl> # 通过浏览器访问127.0.0.1:8000,可以查看结果

zwl> # 中断操作快捷键:ctrl+c

查看局域网ip地址,通过ipconfig,或者 - 在浏览器中访问:172.21.10.40:8000/test,即可查看页面

6.2. 部署服务器上传文件夹到服务器,启动服务后进行后台挂起

zwl> python manage.py runserver 0.0.0.0:8000 &

zwl> # 通过浏览器访问127.0.0.1:8000,可以查看结果

zwl> # 中断操作快捷键:ctrl+c对数据库进行定时抽数,实现数据更新;

配置域名、站点;

您可能感兴趣的与本文相关的镜像

Llama Factory

Llama Factory

模型微调
LLama-Factory

LLaMA Factory 是一个简单易用且高效的大型语言模型(Large Language Model)训练与微调平台。通过 LLaMA Factory,可以在无需编写任何代码的前提下,在本地完成上百种预训练模型的微调

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值