首页 > 数据库技术 > 详细

Django链接数据库

时间:2019-09-15 20:51:19      阅读:81      评论:0      收藏:0      [点我收藏+]

一:文件配置

(1)产生背景:

  (1)在传统的web访问需要加上路由后缀 通过后缀进行相应的视图函数处理

  (2)如果有大量的后缀就需要在路由表里添加大量的后缀 显然不合理

(2)解决办法:

  (1)将文件进行配置暴露给外界能够访问服务器静态文件夹下面所有的资源

例如:

STATIC_URL = ‘/static/‘  # 接口前缀

# 暴露给外部的能够访问服务器内部所有资源
STATICFILES_DIRS = [
os.path.join(BASE_DIR,‘static‘)
]

PS:外部会依次查找文件路径下所有资源 如果访问到则结束 访问失败则返回404

 

二:资源请求区别对待

【1】客户端数据请求

(1)作用:根据不同的请求回应不同的处理结果

例如:

def login(request):
    ‘‘‘
    代码1
    代码2
    代码3
    代码4
    代码5
    ‘‘‘
    return render(request, login.html)

PS:

(1)假设此时我只是想访问login.html这个页面

(2)然而内部走了一些不需要的代码 降低代码执行效率

 

(2)解决办法:根据不同的请求方式进行不同的代码处理

例如:

def login(request):
print(request.method) # 获取请求方式 默认GET请求
if request.method == ‘GET‘:
return render(request, ‘login.html‘) # 如果GET请求则返回页面
else:
return HttpResponse(‘hello world!‘) # 如果POST请求返回相应结果

 

【2】服务端数据获取

(1)前端输入值只有一个数据的时候

例如:

def login(request):

    if request.method == POST:
        print(request.POST)  # <QueryDict: {‘username‘: [‘admin‘], ‘password‘: [‘123‘]}>
        print(request.POST.get(username))  # admin
        print(request.POST.get(password))  # 123
        return HttpResponse(hello world!)
    return render(request,login.html)
技术分享图片
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script>
    <link rel="stylesheet" href="/static/bootstrap/css/bootstrap.min.css">
    <script src="/static/bootstrap/js/bootstrap.min.js"></script>
</head>
<body>
<div class="container">
    <div class="row">
        <form action="" method="post">

            <h3>登陆界面</h3>

            <p>username:
                <label for="d1">
                    <input type="text" id="d1" class="form-control" name="username">
                </label>
            </p>

            <p>password:
                <label for="d2">
                    <input type="password" id="d2" class="form-control" name="password">
                </label>
            </p>
            <input type="submit" class="btn btn-primary">

        </form>
    </div>
</div>

</body>
</html>
前端

PS:

(1)上述可以将获取的值看成字典

(2)可以通过字典的方式获取值 但是推荐使用.get进行值的获取

(3)为什么获取的不是列表而是字符串 请慢慢看

 

(2)前端输入值有多个数据的时候

例如:

def login(request):

    if request.method == POST:
        print(request.POST)  # <QueryDict: {‘username‘: [‘admin‘, ‘user‘], ‘password‘: [‘123‘]}>
        print(request.POST.get(username))  # user
        print(request.POST.get(password))  # 123
        return HttpResponse(hello world!)
    return render(request,login.html)

PS:

(1)当有多个值的时候 其会获取最后一个值

 

(3)服务端一次性获取多个值

例如:

def login(request):

    if request.method == POST:
        print(request.POST)  # <QueryDict: {‘username‘: [‘admin‘, ‘user‘], ‘password‘: [‘123‘]}>
        print(request.POST.getlist(username))  # admin user
        print(request.POST.get(password))  # 123
        return HttpResponse(hello world!)
    return render(request,login.html)

 

三:Django连接数据库

作用:获取数据库值与前端输入数据做校验

例如:

技术分享图片
def login(request):
    username = request.POST.get(username)
    pwd = request.POST.get(password)
    if request.method == POST:
        conn = pymysql.connect(
            host=127.0.0.1,
            port=3306,
            user=root,
            password=123,
            database=day51,
            charset=utf8,
            autocommit=True,
        )
        cursor = conn.cursor(pymysql.cursors.DictCursor)
        sql = select * from user_info where name=%s and password=%s
        cursor.execute(sql, (username, pwd))
        res = cursor.fetchall()
        if res:
            return HttpResponse(登陆成功)
    return render(request, login.html)
操作数据库

 

=

 

Django链接数据库

原文:https://www.cnblogs.com/SR-Program/p/11523965.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!