初识Django
一、静动态网页
当前端页面需要从数据库或者从后端代码上获取到对应数据时 , 需要将前端页面进行转化。需要通过jinja2模块将前端页面进行转化。
下载模块
pip install jinja2
import pymysql
from jinja2 import Template
from wsgiref.simple_server import make_server
def index(url):
with open('index.html' , 'r' , encoding='utf-8') as f:
data = f.read()
return bytes(data.encode('utf-8'))
def get_data(url):
user_data = {'name':'阿宸','age':26}
with open('get_dict.html' , 'r' , encoding='utf-8') as f:
data = f.read()
'''
通过Jinja2模块 , 讲html读取出来的数据使用模板进行处理
就是将html文件转化之后也可以使用类似后端语言进行处理数据
'''
temp = Template(data)
# 将字典数据传递到前端页面中 , 用键值对的方式进行传递数据
# 会返回一个接收到后端数据的前端页面
res = temp.render(user=user_data)
return bytes(res.encode('utf-8'))
def get_db(url):
db = pymysql.connect(
host='localhost',
user='root',
password='root',
charset='utf8',
database='webdata'
)
# 以字典的形式获取数据
cur = db.cursor(cursor=pymysql.cursors.DictCursor)
sql = 'select * from user'
cur.execute(sql)
data_dict = cur.fetchall()
with open('get_db.html' , 'r' , encoding='utf-8') as f:
data = f.read()
temp = Template(data)
res = temp.render(data_list = data_dict)
return bytes(res.encode('utf-8'))
# 函数与url的对应关系
url_dict = {
'/index/':index,
'/get/':get_data,
'/get_db/':get_db
}
def run(environ , response):
response('200 OK' , [])
# 根据不同的url后缀(路由) 去响应对应功能函数
url = environ['PATH_INFO']
msg = 1
# 遍历字典 , 获取url对应的函数
for i in url_dict:
if i == url:
response_data = url_dict[i](url)
msg = 0
break
if msg:
response_data = b'404 not found'
return [response_data]
if __name__ == '__main__':
httpd = make_server('127.0.0.1', 8086 , run)
httpd.serve_forever()
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<table>
<tr>
<th>姓名</th>
<th>性别</th>
<th>年龄</th>
</tr>
<!-- 接收后端从数据库中传递过来的列表数据 -->
<!-- 遍历列表数据 -->
{% for data in data_list %}
<tr>
<!-- data 是一个字典的数据-->
<td>{{data.name}}</td>
<td>{{data.gender}}</td>
<td>{{data.age}}</td>
</tr>
<!-- 在html里面写循环需要设置结束标志 -->
{% endfor %}
</table>
</body>
</html>
二、创建Django项目
Django
大型的web框架 , 自带的组件非常多
flask
小型的web框架 , 自带的组件很少 , 主要依赖第三方模块
tornado
难度极高 , 但是性能好
框架中所有配置都需要自己写
下载Django之前确保工具不会发生版本问题
python版本:3.7以上,3.8
pycharm:2020 , 一定要用专业版
django:3.2
mysql:5.7 以上
下载django
pip install django==3.2
-i http://pypi.douban.com/simple --trusted-host pypi.douban.com
检验是否下载成功
在cmd中输入:django-admin
有返回数据就是下载好了
创建django项目
django项目创建的路径不要出现中文
计算机名称不要是中文
一、在cmd创建
1、打开项目文件夹(项目要存放的地方)
2、创建django项目
django-admin startproject 项目名称
3、启动django项目
进入项目文件夹中
python manage.py runserver
关闭ctrl + C
二、在pycharm中创建
flie -- new project
选择django进行创建
三、应用app
项目中的各部分功能 , 项目中不同的功能创建不同应用
创建应用的命令
python manage.py startapp 应用名称
Django项目中的文件
mysite
|--- mysite
| |--- asgi.py 异步处理操作[暂时不需要]
| |--- settings.py 项目的配置文件
| |--- urls.py 路由配置
| |--- wsgi.py 封装socket的东西
|--- app01
| |--- migrations 数据库迁移记录
| |--- admin.py 后台管理文件
| |--- apps.py 用来注册app
| |--- models.py 用来操作数据库
| |--- views.py 视图函数(url对应的功能函数)
| |--- tests.py 用来测试代码
|--- templates 存放前端页面文件
|--- manage.py django项目的启动文件
在django项目中创建的文件夹都必须进行配置。
注册app应用
在settings配置文件中
INSTALLED_APPS里面进行注册
注册app的语法: app名称
'app01.apps.App01Config' ,完整的写法
'app01' 简写