pythonWeb前期基础

# python web

## 前端开发

目的:开发一个网站:

- ​ 前端开发:html、css、js
- ​ web框架:接收请求并处理
- ​ mysql数据库:存储数据的地方

快速上手:

- ​ 基于Flask web框架快速搭建网站

深入学习:

- ​ 基于Django框架(主要)

## 1、快速开发完网站

```
安装flask:pip install flask
安装超时换pip源
你下载的库可以很多都是在国外,所以你下载很慢,往往导致超时错误,对此,你可以对你的pip换源,换成国内的镜像源来解决这个问题,下面列出几种常见的国内源。
国外镜像源:
加利福尼亚大学 :https://www.lfd.uci.edu/~gohlke/pythonlibs/
国内镜像源:
豆瓣:http://pypi.douban.com/simple (推荐)
阿里:http://mirrors.aliyun.com/pypi/simple
清华:https://pypi.tuna.tsinghua.edu.cn/simple(推荐)
华中理工大学:http://pypi.hustunique.com/simple
山东理工大学:http://pypi.sdutlinux.org/simple
中国科学技术大学:http://pypi.mirrors.ustc.edu.cn/simple
使用方法:
使用一次: pip install you_package_name -i https://pypi.tuna.tsinghua.edu.cn/simple(清华源)
设置镜像源 :pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple(清华源)
```

## 初识Django

python知识点:函数、面向对象

前端开发:html、css、js、jQ、bootstrap。

mysql数据库

python的web框架:

1. flask
2. Django(主要)

## 安装Django

```
pip install django
通过命令查看安装的工具包:pip list
```

```
c:python
-python.exe
-scrpits
-pip.exe
-django-admin.exe
-lib
-内置模块
-site-packages
-openpyxl
-python-docx
-flask
-django
```

## 创建项目

默认项目的文件介绍

```
djangoProject 项目名称
|--manange.py [项目的管理、启动项目、创建app、数据管理]
|--djangoProject
|--_init_.py [一个空文件,告诉 Python 这个目录应该被认为是一个 Python 包]
|--asgi.py [接收网络请求:异步](不要动)
|--settings.py [项目的配置文件]
|--urls.py [url和函数的对应关系]
|--wsgi.py [接收网络请求:同步](不要动)

```

 

## 创建APP

```
-项目
-用户
-订单
-后台
-主页
...
注意:一般用不到很多APP,我们开发只使用一个就好!!
```

```
创建项目:django-admin startproject project
创建APP:python manage.py startapp app(app的名称)

 

 


```

## 快速上手

### 注册app

通过app找到app.py中的AppConfig

在setting.py中找到INSTALLED_APPS,注册app。

 

 

在urls.py中编写url和视图函数的对应关系

url对应的是我们app中的view.py中的函数

 

 

在view.py中编写视图函数

- 返回数据和网页俩种方式

 

 

 

 

启动操作Django项目

1. 命令行启动

```
python manage.py runserver
```

2. 手动启动

![1659942793861](img\1659942793861.png)

 

## templates模板

所有的html都在templates文件中

但是,如果我们有css,js,图片文件该放哪呢?

我们需要创建static文件在app中,并且在static中创建css,js,img,plugins(插件)

### 静态文件引入方式(官方推荐方法)

需要引用的href和src都通过这种方法使用

```
{% load static %}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<link rel="stylesheet" href="{% static 'css/index.css'%}">
</head>
<body>
<p>登录</p>
</body>
</html>
```

好处:代码上线之后方便管理,如果static路径改了,我们可以通过修改一个配置文件中的STATIC_URL去统一路径

css,js静态文件访问不到解决方法:

在settings.py中设置静态文件夹

```
STATIC_URL = '/static/'
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'static/'),
)
```

 

## django模板语法

```
def index (request):
name = "小粤"
roles = ["老师", "学生", "校长"]
user_info = {"name": "张三", 'role': "老师"}
data_list = [
{"name": "张三", 'role': "老师"},
{"name": "王五", 'role': "学生"},
{"name": "老六", 'role': "校长"}
]
return render(request, "index.html",
{"name": name, "roles": roles, "info": user_info, "data": data_list})
```

 

```
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>

<p>字符串:</p>
<p>{{ name }}</p>


<p>列表:</p>
<p>遍历列表:</p>
{% for role in roles %}
<li>{{ role }}</li>
{% endfor %}
{{ roles.0 }}
{{ roles.1 }}
{{ roles.2 }}


<p>字典:</p>
<p>分别写出名字的值和角色的值:</p>
<span>{{ info.name }}</span>
<span>{{ info.role }}</span>
<p>遍历所有:</p>
{% for info in info.items %}
<p>{{ info }}</p>
{% endfor %}
<p>遍历values:</p>
{% for info in info.values %}
<p>{{ info }}</p>
{% endfor %}
<p>遍历keys:</p>
{% for info in info.keys %}
<p>{{ info }}</p>
{% endfor %}
<p>遍历所有key和value:</p>
{% for k,v in info.items %}
<p>{{ k }} = {{ v }}</p>
{% endfor %}

<p>列表套字典</p>
{% for data in data %}
{{ data.name }}, {{ data.role }}
{% endfor %}
{% if name == "小粤" %}
<p>我是小粤</p>
{% endif %}
</body>
</html>
```

 

## 请求和响应

```
# 1.获取请求的方式
print(request.method)
# 2.在url上传值 /index/?name = 123&role=老师
print(request.GET)
# 3.在请求体重提交数据
print(request.POST)
# 4.响应:将内容中的字符串返回给请求者
return HttpResponse("返回的内容")
# 5.响应:读取html+渲染+字符串,返回给用户
return render(request, "index.html",
{"name": name, "roles": roles, "info": user_info, "data": data_list})
# 6.响应:让浏览器重定向到其他的页面
return redirect("https://www.baidu.com")
```

 

## python操作mysql

用python代码连接mysql并且发送指令

```
pip install pymysql
```

数据库连接

```
import pymysql
#1.链接数据库
conn = pymysql.connect(
host='127.0.0.1', # 连接名称,默认127.0.0.1
user='root', # 用户名
passwd='root', # 密码
port=3307, # 端口,默认为3306
db='shopping', # 数据库名称
charset='utf8', # 字符编码
)
#2.获取游标
cursor = conn.cursor()
#3.定义sql
sql = "insert into users(user_name,pwd)values ('abc','123')"
#4.执行SQL语句
cursor.execute(sql)
#5.关闭光标对象
cursor.close()
#6.提交事务(很重要)
conn.commit()
#7.关闭数据库连接
conn.close()
```

 

注意:

在进行增、删、改的时候,一定要记得commit,去提交事务,否则数据库就会没有数据。

```
cursor.execute(“”)
conn.commit()
```

查询数据的时候不需要commit,但是要执行fetchall/fetchone,查询所有或者是查询复核条件的第一条数据。

```
ce=cursor.execute()
#查询所有数据,无数据的时候是空列表
cf=cursor.fetchall()
#查询符合条件的第一条数据,无数据的时候是none
cf=cursor.fetchone()
```

对于sql语句不要用python的字符串格式化进行拼接,目的是防止sql注入,一定要使用execute+参数

```
cursor.execute(“”,[])
cursor.execute(“”,{ : , :})
```

 

## Django连接mysql

安装第三方模块

```
pip install mysqlclient
```

报错解决方案:

https://pypi.org/project/mysqlclient/#files

![1660200863796](img\1660200863796.png)

选择对应的python版本安装

### orm

orm可以帮我们做俩件事:

1. 创建、修改、删除数据库中的表(不用你写sql)。【注意:无法创建数据库,需要自己手动创建数据库】
2. 操作表中的数据(不用你写sql)。

### 创建数据库

- 启动mysql服务器
- 创建数据库

### django连接数据库

找到settings.py配置文件,将以下代码注释

```
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}
```

替换成mysql数据库

```
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'HOST': '127.0.0.1', # 数据库主机
'PORT': 3307, # 数据库端口,默认是3306
'USER': 'root', # 数据库用户名
'PASSWORD': 'root', # 数据库用户密码
'NAME': 'shopping' # 数据库名字
}
}
```

### 操作表

- 创建表

在models.py文件中:

```
class users1(models.Model):
user_name=models.CharField(max_length=32)
pwd=models.CharField(max_length=32)
```

在命令行中执行:

```
python manage.py makemigrations
python manage.py migrate
```

默认会给表创建id

注意:执行这两行命令的时候一定要注册app,否则数据库中不会有数据

- 删除表

只需要把我们写的删除即可

```
class users1(models.Model):
user_name=models.CharField(max_length=32)
pwd=models.CharField(max_length=32)
```

 

- 修改表

删除字段只需要讲对应字段的代码删除,并执行命令

添加字段的时候需要表明要添加字段的默认值,或者执行命令后去添加值

1. 手动输入值(执行命令后输入1,在输入对应的值)
2. 设置默认值
3. 允许为空

```
class users1(models.Model):
user_name=models.CharField(max_length=32)
pwd=models.CharField(max_length=32)
#设置默认值
age= models.IntegerField(default=0)
#允许为空
data=models.IntegerField(null=Ture ,blank=True)
```

### 增删改查

导入models.py中创建的表

```
from app.models import study
```

### 增

表名.objects.create(...)

```
study.objects.create(user_name="123",pwd="123")
```

### 删

删除这张表单条数据:表名.objects.filter(条件).delete()

删除这张表所有数据:表名.objects.all().delete()

### 改

修改所有数据:表名.objects.all().update(条件)

修改符合条件的数据:表名.objects.filter(条件).update(条件)

### 查

查询所有数据(<对象,对象,...>):表名.objects.all()

查询符合条件的数据(<对象>):表名.objects.filter(条件)

查询符合条件的第一个对象:表名.objects.filter(条件).first()

## 模板继承

#### 模板

```
{% block css%}{% endblock%}
{% block content%}{% endblock%}
{% block js%}{% endblock%}
```

```
{% extends 'xx.html'%}
{% block css%}
......
{% endblock%}
{% block content%}
......
{% endblock%}
{% block js%}
......
{% endblock%}
```

 

### 应用模板

## 项目

 

## eachars(画图)

eachars官网:https://echarts.apache.org/zh/index.html

使用手册中下载eachars的js文件:

下载->方法三->在线定制->可自由选择所需图表和组件进行打包下载

注:开发环境建议不压缩代码,代码压缩会去掉大部分常见的警告和错误提示

 

 

posted @ 2022-09-15 22:13  去公司搞点薯条  阅读(78)  评论(0)    收藏  举报