目录
-静态文件配置
--含义
静态文件指一些写好的固定文件,直接使用即可
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