15158846557 在线咨询 在线咨询
15158846557 在线咨询
所在位置: 首页 > 营销资讯 > 网站运营 > 实操篇:用Django实现Python建站

实操篇:用Django实现Python建站

时间:2023-07-11 14:24:01 | 来源:网站运营

时间:2023-07-11 14:24:01 来源:网站运营

实操篇:用Django实现Python建站:
python利用Django搭建第一个网页

为什么要用Django

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

搭建Django需要预备哪些知识

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

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

Django的搭建路线

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

python安装django相关模块

cmd> pip install djangocmd> # 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_namecmd> # 注意:在windows上如果启动错误,尝试用django-admin代替django-admin.py试试;cmd>cmd> django-admin startproject zwlcmd> # project_name为自定义,示例项目为zwl2.2. 创建第一个APP

cmd> cd zwlcmd> # 进入项目文件夹,并创建第一个应用zwl> django-admin startapp supconzwl> tree /fzwl> # 如果是在mac或者linux需要预装tree,且中文目录为tree -Nzwl> # linux下安装tree的命令,sudo apt-get install tree此时,在工作目录下的文件结构如下图所示







zwl> # 此时一个django的项目就已经搭建好了,查看是否成功zwl> python manage.py runserverzwl> # 在运行时可以添加自定义端口,如python manage.py runserver 8008zwl> # 通过浏览器访问127.0.0.1:8000,可以查看结果zwl> # 中断快捷键:ctrl+c浏览器访问结果




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

cmd> python manage.py makemigrationsdjango.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__)cmd> python manage.py makemigrationsAttributeError: '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 mysqlcmd> # 如果mysql没有启动,则需要提前启动cmd> mysql -u root -pcmd> 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 pymysqlpymysql.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 makemigrationszwl> # 执行数据迁移zwl> python magage.py migratezwl> # 同步表结构此时,在mysql中会创建一张bi_person的表,可通过Navicat进行查看

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

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

# python console# 导入相关的模块、工具from BIDashboard.models import BiPersonfrom django.core.serializers import serialize# 可查看表相关数据,格式为querysetBiPerson.objects.all().values()Out[1]: <QuerySet [{'id': 1, 'name': '夏天', 'person_id': 1}, {'id': 2, 'name': '西索', 'person_id': 2}, {'id': 3, 'name': '蜗牛', 'person_id': 3}]># 如果需要进行字段筛选,可以在values中取出对应的字段BiPerson.objects.all().values('id','name')Out[2]: <QuerySet [{'id': 1, 'name': '夏天'}, {'id': 2, 'name': '西索'}, {'id': 3, 'name': '蜗牛'}]># 可通过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 consolefrom django.db import connectionsql='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 templateszwl>tree /f # linux是tree -N4.1. 编写自己的第一个网页

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

templates/first.html

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>示例网站</title></head><body> <p>这是我的第一个网页</p></body></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,JsonResponsefrom supcon.models import BiPersondef test(request): return render(request,'first.html')4.3. 配置网站路由

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

zwl/urls.py

from django.contrib import adminfrom django.conf.urls import urlfrom zwl import settingsfrom supcon import viewsurlpatterns = [ path('admin/', admin.site.urls), path('test/',views.test), ]4.4. 查看网页

进入终端/cmd,启动服务

zwl> python manage.py runserverzwl> # 在运行时可以添加自定义端口,如python manage.py runserver 8008zwl> # 通过浏览器访问127.0.0.1:8000,可以查看结果zwl> # 中断操作快捷键:ctrl+c在浏览器中访问:127.0.0.1:8000/test,即可查看页面

4.5. 在网页中载入数据

此时网页中的信息是人为写上去的,接下来我们通过连接数据库,从创建的bi_person表中读出数据,并以表格的形式呈现出来。

supcon/views.py

from django.shortcuts import render# Create your views here.from django.http import HttpResponse,JsonResponsefrom supcon.models import BiPersondef index(request): # 取出数据库中的所有数据 mydata=BiPerson.objects.all() # 需要传递给HTML5的对象 context={'data':mydata} return render(request,'first.html',context)templates/first.html

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>示例网站</title></head><body> <p>这是我的第一个网页</p> <table> <thead> <tr> <th>person_id</th> <th>name</th> </tr> </thead> <tbody> {% for item in mydata %} <tr> <td>{{ item.person_id }}</td> <td>{{ item.name }}</td> </tr> {% endfor %} </tbody> </table></body></html>zwl> python manage.py runserverzwl> # 在运行时可以添加自定义端口,如python manage.py runserver 8008zwl> # 通过浏览器访问127.0.0.1:8000,可以查看结果zwl> # 中断操作快捷键:ctrl+c
此时,一个基础的网页就已经形成了,剩下的就是如何美化,以及服务部署

5. 美化页面

6. 实现远程访问

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

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

zwl/settings.py

# ALLOWED_HOSTS = []ALLOWED_HOSTS ="*"zwl> python manage.py runserver 0.0.0.08000zwl> # 通过浏览器访问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.08000 &zwl> # 通过浏览器访问127.0.0.1:8000,可以查看结果zwl> # 中断操作快捷键:ctrl+c

关键词:实现

74
73
25
news

版权所有© 亿企邦 1997-2025 保留一切法律许可权利。

为了最佳展示效果,本站不支持IE9及以下版本的浏览器,建议您使用谷歌Chrome浏览器。 点击下载Chrome浏览器
关闭