首页 > 数据库 >Django-静态文件配置,链接数据库,request对象方法

Django-静态文件配置,链接数据库,request对象方法

时间:2022-10-22 23:37:32浏览次数:47  
标签:GET -- 数据库 request Django static hobby POST

目录

-静态文件配置

--含义

--配置方法

--动态解析

---含义

---实现

---示例

-pycharm链接MySQL

-Django链接MySQL

--代码配置

--代码声明

-request对象常用方法

--示例


-静态文件配置

--含义

静态文件指一些写好的固定文件,直接使用即可

eg:
    网站写好的js文件
    网站写好的css文件
    网站用到的image文件
    第三方功能包
    ......

一般我们都将静态文件放在项目的static目录下,并对不同静态文件划分处理

--static
    ---js
    ---css
    ---image

--配置方法

STATIC_URL = '/static/'
"""
配置静态文件目录名为static,自动在项目文件下创建
类似于开门的钥匙,后续访问需要带上钥匙才能进入,如/static/js/bootstrap.min.js
"""
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static'),
    os.path.join(BASE_DIR, 'static2'),  # 可以放多个
]
"""
静态文件路径拼加,可以放多个,从上往下找,先找到的先使用
"""

--动态解析

---含义

STATIC_URL一配置,后续使用都需加上该"钥匙"
但倘若STATIC_URL设置的名称一改,那后续使用了静态文件的路径都要改
假想一个图片网站使用了上万张静态文件中的图片,那岂不是这万个路径都得改?
因此比较麻烦,引入动态解析的使用

---实现

引用时使用如下方式:
    {% load static %}   # 先加载出static,必写
 
    使用时="{% static '文件在static中的路径' %}"
 
这样不管STATIC_URL改为什么,前端引用时自动匹配该名称拼加路径使用

---示例

 html02_jintaiwenjianpeizhi.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>静态文件配置示例</title>
    {# <script src="/static/bootstrap-3.4.1-dist/js/bootstrap.min.js"></script> #}
    {# link rel="stylesheet" href="/static/bootstrap-3.4.1-dist/css/bootstrap.min.css"> #}
    {% load static %}
    <link rel="stylesheet" href="{% static 'bootstrap-3.4.1-dist/css/bootstrap.min.css' %}">
    <script src="{% static 'bootstrap-3.4.1-dist/js/bootstrap.min.js' %}"></script>
</head>
<body>
    <h1 class="text-center">login successfully</h1>
</body>
</html>

-pycharm链接MySQL

找到链接数据库的位置

 一定要先下载驱动,再输入密码等测试连接

 test connecttion出现对钩了才确定,不然换mysql重新下驱动

 

 

 就可pycharm操作数据库了  但操作完后一定要点提交

 

-Django链接MySQL

Django配置文件中有如下代码,默认用的sqlite3
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

--代码配置

将原来的注释掉,改为以下
 
DATABASES = {
    'default':{
        'ENGINE': 'django.db.backends.mysql',
        'NAME': '自己的数据库',
        'USER': '自己的用户',
        'PASSWORD': '自己设置的密码',
        'HOST': '127.0.0.1',
        'PORT': 3306,
        'CHARSET': 'utf8' # !!!注意不加-  
    }
}

--代码声明

django默认使用mysqldb链接MySQL
但该模块兼容性不太好,需要手动改为pymysql链接
要想Django项目真正运行起来,还需去项目名文件夹或任意应用文件夹下的__init__.py中配置两句话(即下面的代码声明)
 
# 代码声明
import pymysql
pymysql.install_as_MySQLdb()

-request对象常用方法

request.method    # 返回用户数据请求格式:POST GET 大写字符串格式
 
request.POST      # 得到用户提交的数据(不含文件)  字典
    request.POST.get('key')      # 拿到对应key下的值 为列表最后一个元素
    request.POST.getlist('key')  # 拿到对应key下的所有值 即一个列表
 
request.GET       # 得到用户提交的数据(不含文件)  字典
    request.GET.get('key')       # 拿到对应key下的值 为列表最后一个元素
    request.GET.getlist('key')   # 拿到对应key下的所有值 即一个列表
 
# PS:GET请求拿到的数据大小有限制 4KB左右吧 而post请求无限制 

--示例

views.py

def loginStudy(request):
    # 一般不用这种两个if的方法,而用一个if省一行缩近,但用也可以
    # if request.method == 'POST':
    #     pass
    # elif request.method == 'GET':
    #     pass
    if request.method == 'POST':    # 返回的是字符串大写格式,如'POST','GET'
        # print(request.POST)
        # request.POST返回的是一个字典 <QueryDict: {'username': ['weer'], 'password': ['123']}>
        username = request.POST.get('username') # 即可以用字典的方法取值 weer
        hobby = request.POST.get('hobby')
        # 只返回hobby下列表的最后一个值即'333'
        hobby_list1 = request.POST.getlist('hobby')
        # 得到hobby下的整个列表 ['111', '222', '333']
        print(username, hobby_list1)
        return render(request, 'html02_jintaiwenjianpeizhi.html')
    # GET请求方式提交的,也能获取数据,get(),getlist()得到数据同POST方式
    # 比如地址栏中:http://127.0.0.1:8000/loginStudy/?password=123&hobby=[111,222,333]
    password = request.GET.get('password')  # 123
    hobby_list2 = request.GET.getlist('hobby') # ['111', '222', '333']
    print(password, hobby_list2)
    return render(request, 'html03_login example.html')
views.py

 html03_login example.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>登录界面 后台数据获取</title>
    <link rel="stylesheet" href="/static/bootstrap-3.4.1-dist/css/bootstrap.min.css">
    <script src="/static/bootstrap-3.4.1-dist/js/bootstrap.min.js"></script>
</head>
<body>
    <div class="container">
        <div class="col-md-8 col-md-offset-2">
            <form action="/loginStudy/" method="post">
                <h2 class="text-center">登录</h2>
                <p>username:<input type="text" name="username" class="form-control"></p>
                <p>password<input type="password" name="password" class="form-control"></p>
                <p>
                    <input type="checkbox" name="hobby" value="111">111
                    <input type="checkbox" name="hobby" value="222">222
                    <input type="checkbox" name="hobby" value="333">333
                </p>
                <p><input type="submit" class="btn btn-success btn-block"></p>
            </form>
        </div>
    </div>
</body>
</html>
html03_login example.html

url

path('loginStudy/', views.loginStudy),

标签:GET,--,数据库,request,Django,static,hobby,POST
From: https://www.cnblogs.com/weer/p/16817588.html

相关文章

  • 解决django.core.exceptions.ImproperlyConfigured: Requested setting LOGGING_CONFI
    在开发Django项目时,调整了django文件目录结构同时配置完自己的配置文件路径后在终端执行pythonmanage.pyrunserver命令启动django项目时,报以下错误:django.core.ex......
  • SpringBoot 创建项目连接mysql数据库
    Spring 创建项目1.创建一个springboot项目2.点击File---- New---- project项目名称可以随便填写...3. Springboot版本尽量不要最新版,怕你们驾驭不了......
  • Django-ORM
    目录-定义-使用方法--models.py--数据库迁移命令 --注意-实际操作--ORM实现字段的增删改查--ORM实现数据的增删改查--ORM创建表与表之间的联系-定义ORM:对......
  • Django-入门
    目录-Django版本--5种转换器--自定义转换器--级联更新级联删除-Django安装-Django基本操作--终端命令操作---创建Django项目---启动Django项目---创建功能模块......
  • MySQL - 数据库配置参数、性能优化教程
     将 MySQL 部署到普通的 X86 服务器上,在不经过任何优化情况下,MySQL 理论值正常可以处理 2000 左右 QPS。不过当访问量达到 1500 左右并发连接时,数据库处理性能......
  • 一款开源的数据库在线预览、导出工具
    database-export是一款多线程生成数据库结构文档的开源springboot工程,能支持最新的数据库版本,可以导出docx格式和xlsx的文档,也能直接在网页上预览项目使用技术JDK1.8VUE2.0E......
  • 二、postgresql 14为数据库配置ssl支持,创建sslinfo扩展
    1、配置SSL创建自签名证书opensslreq-new-x509-days365-nodes-text-outserver.crt-keyoutserver.key-subj"/CN=cdh01"chmodog-rwxserver.key创建一个证书签......
  • Linux、数据库、Redis、MongoDB统一管理平台!
    #一、开源项目简介基于DDD分层实现的web版linux(终端文件脚本进程)、数据库(mysqlpostgres)、redis(单机集群)、mongo统一管理操作平台# 二、开源协议使用Apache-2.0......
  • 优化 WordPress 数据库,提高 WordPress 速度
    WordPress的机制是主要使用wp_posts表来存储所有数据,包括日志,页面,附件,导航菜单等等,所以WordPress使用了一定时间之后,数据量一大还是有点慢,除了对WordPress进行全方......
  • 如何给一个 HTAP 数据库做基准测试?StoneDB学术分享会第4期
    在最新一届国际数据库顶级会议ACMSIGMOD2022上,来自清华大学的李国良和张超两位老师发表了一篇论文:《HTAPDatabase:WhatisNewandWhatisNext》,并做了《HTAP......