Python Web基础之Django


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

在这里插入图片描述

  1. 进入第一个blog文件夹下运行:
    在这里插入图片描述

  2. 进入网址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请求

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’],

会一直显示如下错误
在这里插入图片描述

这是我从未接触过的领域,是个新手、小白,写这篇文章肯定会有错误,以我当下的理解也到这里了,若有错误以及个人见解,还望大家指出!

猜你喜欢

转载自blog.csdn.net/HG0724/article/details/112717997