文章目录
Python Web框架
- Django :功能全,一切都好用
- Flask:小而美,需要自己组装,灵活性强
一、Django基础
1.1 安装
pip install django
pip install mysqlclient
1.2. 使用django创建web 服务器工程
django-admin startproject blog
1.3. 运行网站服务
python manage.py runserver
-
进入第一个blog文件夹下运行:
-
进入网址http://127.0.0.1:8000/:
默认生成以下界面
1.4 创建一个网页
-
打开第二个blog文件夹下的urls.py文件
-
如下图,加入语句并创建文件
-
从新进入网页http://127.0.0.1:8000/:
-
解决办法:加上具体文件
以上即为一个简单的web服务请求,有了Django我们只要配置路由,然后绑定处理函数,进行逻辑处理即可
1.5 设置主路由
直接访问http://127.0.0.1:80jing00/主路径会报错:
由于主路径主路由没有加入路径处理函数里
二、网页显示
2.1 配置相关文件
-
配置路由文件urls.py
-
views.py中创建函数user
-
创建文件templas以及子文件user.html
同级目录:manage.py与tempaltes
-
配置settings.py文件
2.2 编写代码
- views.py中user函数内容如下:
def user(request):
#get请求 传入 名字,然后在网页上显示:你好,名字
#创建html模板h和manage.py同一级创建templates文件夹
#该文件夹下创建user.html
#http://127.0.0.1:8000/users?name=Tom
name = request.Get['name']
context = {
'name': name}#用字典传输名字
return render(request,'user/user.html',context)
- user.html内容如下
<h1>你好,{
{name}}</h1>>
- 运行结果
2.3 HTTP请求
- 通过VS Code发起上述请求
安装扩展REST Client
- 新建文件test.http
- 如下图,点击Senf Ruquest
三、连接数据库
3.1 数据库连接
SQL语句
ORM方式: SQLAlchemy
-
settings.py设置数据库
-
生成应用:
django-amdin startapp user
- settings.py加入应用
- Django对数据库中数据的操作是user下的models.py
- 数据库生成python Django自带的权限管理的表
- 生成user自己定义的表:
python manage.py makemigrations user
告诉Django要将定义好的user的model生成user表
- python manage.py migrate user
只需更新user即可
- 查看数据库
第二个user是类名
3.2 添加数据
这一步往数据库添加信息,http请求往数据库里添加信息是POST但是浏览器只可以GET操作,因此使用REST Client进行POST请求
- test.http文件
POST http://127.0.0.1:8000/users/ HTTP/1.1
Content-Type: application/json
{
"name":"Hendeff",
"score":"66"
}
- views.py文件
def user(request):
#判断请求
if request.method == "GET":
#get请求 传入 名字,然后在网页上显示:你好,名字
#创建html模板h和manage.py同一级创建templates文件夹
#该文件夹下创建user.html
#http://127.0.0.1:8000/users?name=Tom
name = request.GET['name']
context = {
'name': name}#用字典传输名字
return render(request,'user.html',context)
elif request.method == "POST":
params = json.loads(request.body)
name = params['name']
score = params['score']
u1 = User(name=name, score=score)
u1.save()
return HttpResponse('user_id'+str(u1.id)+"已经添加")
else:
return render(request,'user.html', {
})
提交:[先注释settings.py中下面语句]
到此为止,我们完成了用户传输信息然后传到Django,然后通过判断请求来进行操作
3.3 查询数据
- views.py中user函数
if request.method == "GET":
#get请求 传入 名字,然后在网页上显示:你好,名字
#创建html模板h和manage.py同一级创建templates文件夹
#该文件夹下创建user.html
#http://127.0.0.1:8000/users?name=Tom
id = request.GET['id']
#在数据库中查询
u1 = User.objects.get(id=id)
context ={
'id': u1.id, 'name': u1.name,'score': u1.score}
return render(request,'user.html',context)
- user.html
<h1>你好,{
{name}}</h1>
<h1>学号,{
{id}}</h1>
<h1>成绩,{
{score}}</h1>
- test.http
GET http://127.0.0.1:8000/users?id=1 HTTP/1.1
3.4 修改数据
- views.py中user函数
elif request.method == "PUT":
params = json.loads(request.body)
id = params['id']
name = params['name']
score = params['score']
u1 = User.objects.get(id=id)#查询
u1.name = name
u1.score = score
u1.id = id
u1.save()
return HttpResponse('user_id'+str(u1.id)+"已经修改")
- test.http
PUT http://127.0.0.1:8000/users/ HTTP/1.1
Content-Type: application/json
{
"id":1,
"name":"Tom",
"score":88
}
总结
问题1:理解路由的概念
将网页路径同文件路径理解即路由:
如下:
https://www.zhihu.com/question/439434803?utm_division=hot_list_page
question对应一个文件夹,439434803对应一个具体问题文件
问题2:Django自动重启
每当我们保存文件时,Django会自动保存(不放GIF了自己保存测试即可)
问题3:settings.py配置DIR
这是正确的:
‘DIRS’: [os.path.join(BASE_DIR, ‘templates/’)],
这是错误的:(但是老师这样配置是可以运行的我的一直显示错误)
‘DIRS’: [BASE_DIR + ‘/templates’],
会一直显示如下错误