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

锦通  金牌会员 | 2022-10-22 23:10:28 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 814|帖子 814|积分 2442

目录
-静态文件配置
--含义
--配置方法
--动态解析
---含义
---实现
---示例
-pycharm链接MySQL
-Django链接MySQL
--代码配置
--代码声明
-request对象常用方法
--示例
-静态文件配置

--含义

静态文件指一些写好的固定文件,直接使用即可
  1. eg:
  2.     网站写好的js文件
  3.     网站写好的css文件
  4.     网站用到的image文件
  5.     第三方功能包
  6.     ......
复制代码
一般我们都将静态文件放在项目的static目录下,并对不同静态文件划分处理
  1. --static
  2.     ---js
  3.     ---css
  4.     ---image
复制代码
--配置方法
  1. STATIC_URL = '/static/'
  2. """
  3. 配置静态文件目录名为static,自动在项目文件下创建
  4. 类似于开门的钥匙,后续访问需要带上钥匙才能进入,如/static/js/bootstrap.min.js
  5. """
  6. STATICFILES_DIRS = [
  7.     os.path.join(BASE_DIR, 'static'),
  8.     os.path.join(BASE_DIR, 'static2'),  # 可以放多个
  9. ]
  10. """
  11. 静态文件路径拼加,可以放多个,从上往下找,先找到的先使用
  12. """
复制代码
--动态解析

---含义
  1. STATIC_URL一配置,后续使用都需加上该"钥匙"
  2. 但倘若STATIC_URL设置的名称一改,那后续使用了静态文件的路径都要改
  3. 假想一个图片网站使用了上万张静态文件中的图片,那岂不是这万个路径都得改?
  4. 因此比较麻烦,引入动态解析的使用
复制代码
---实现
  1. 引用时使用如下方式:
  2.     {% load static %}   # 先加载出static,必写
  3.     使用时="{% static '文件在static中的路径' %}"
  4. 这样不管STATIC_URL改为什么,前端引用时自动匹配该名称拼加路径使用
复制代码
---示例

 html02_jintaiwenjianpeizhi.html
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4.     <meta charset="UTF-8">
  5.     <title>静态文件配置示例</title>
  6.     {#  #}
  7.     {# link rel="stylesheet" href="/static/bootstrap-3.4.1-dist/css/bootstrap.min.css"> #}
  8.     {% load static %}
  9.     <link rel="stylesheet" href="{% static 'bootstrap-3.4.1-dist/css/bootstrap.min.css' %}">
  10.    
  11. </head>
  12. <body>
  13.     <h1 class="text-center">login successfully</h1>
  14. </body>
  15. </html>
复制代码
-pycharm链接MySQL

找到链接数据库的位置
 一定要先下载驱动,再输入密码等测试连接

 test connecttion出现对钩了才确定,不然换mysql重新下驱动
 
 
 就可pycharm操作数据库了  但操作完后一定要点提交
 
-Django链接MySQL
  1. Django配置文件中有如下代码,默认用的sqlite3
  2. DATABASES = {
  3.     'default': {
  4.         'ENGINE': 'django.db.backends.sqlite3',
  5.         'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
  6.     }
  7. }
复制代码
--代码配置
  1. 将原来的注释掉,改为以下
  2. DATABASES = {
  3.     'default':{
  4.         'ENGINE': 'django.db.backends.mysql',
  5.         'NAME': '自己的数据库',
  6.         'USER': '自己的用户',
  7.         'PASSWORD': '自己设置的密码',
  8.         'HOST': '127.0.0.1',
  9.         'PORT': 3306,
  10.         'CHARSET': 'utf8' # !!!注意不加-  
  11.     }
  12. }
复制代码
--代码声明
  1. django默认使用mysqldb链接MySQL
  2. 但该模块兼容性不太好,需要手动改为pymysql链接
  3. 要想Django项目真正运行起来,还需去项目名文件夹或任意应用文件夹下的__init__.py中配置两句话(即下面的代码声明)
  4. # 代码声明
  5. import pymysql
  6. pymysql.install_as_MySQLdb()
复制代码
-request对象常用方法
  1. request.method    # 返回用户数据请求格式:POST GET 大写字符串格式
  2. request.POST      # 得到用户提交的数据(不含文件)  字典
  3.     request.POST.get('key')      # 拿到对应key下的值 为列表最后一个元素
  4.     request.POST.getlist('key')  # 拿到对应key下的所有值 即一个列表
  5. request.GET       # 得到用户提交的数据(不含文件)  字典
  6.     request.GET.get('key')       # 拿到对应key下的值 为列表最后一个元素
  7.     request.GET.getlist('key')   # 拿到对应key下的所有值 即一个列表
  8. # PS:GET请求拿到的数据大小有限制 4KB左右吧 而post请求无限制
复制代码
--示例

views.py
  1. def loginStudy(request):
  2.     # 一般不用这种两个if的方法,而用一个if省一行缩近,但用也可以
  3.     # if request.method == 'POST':
  4.     #     pass
  5.     # elif request.method == 'GET':
  6.     #     pass
  7.     if request.method == 'POST':    # 返回的是字符串大写格式,如'POST','GET'
  8.         # print(request.POST)
  9.         # request.POST返回的是一个字典 <QueryDict: {'username': ['weer'], 'password': ['123']}>
  10.         username = request.POST.get('username') # 即可以用字典的方法取值 weer
  11.         hobby = request.POST.get('hobby')
  12.         # 只返回hobby下列表的最后一个值即'333'
  13.         hobby_list1 = request.POST.getlist('hobby')
  14.         # 得到hobby下的整个列表 ['111', '222', '333']
  15.         print(username, hobby_list1)
  16.         return render(request, 'html02_jintaiwenjianpeizhi.html')
  17.     # GET请求方式提交的,也能获取数据,get(),getlist()得到数据同POST方式
  18.     # 比如地址栏中:http://127.0.0.1:8000/loginStudy/?password=123&hobby=[111,222,333]
  19.     password = request.GET.get('password')  # 123
  20.     hobby_list2 = request.GET.getlist('hobby') # ['111', '222', '333']
  21.     print(password, hobby_list2)
  22.     return render(request, 'html03_login example.html')
复制代码
views.py html03_login example.html
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4.     <meta charset="UTF-8">
  5.     <title>登录界面 后台数据获取</title>
  6.     <link rel="stylesheet" href="/static/bootstrap-3.4.1-dist/css/bootstrap.min.css">
  7.    
  8. </head>
  9. <body>
  10.    
  11.         
  12.             <form action="/loginStudy/" method="post">
  13.                 <h2 class="text-center">登录</h2>
  14.                 <p>username:<input type="text" name="username" class="form-control"></p>
  15.                 <p>password<input type="password" name="password" class="form-control"></p>
  16.                 <p>
  17.                     <input type="checkbox" name="hobby" value="111">111
  18.                     <input type="checkbox" name="hobby" value="222">222
  19.                     <input type="checkbox" name="hobby" value="333">333
  20.                 </p>
  21.                 <p><input type="submit" class="btn btn-success btn-block"></p>
  22.             </form>
  23.         
  24.    
  25. </body>
  26. </html>
复制代码
html03_login example.htmlurl
  1. path('loginStudy/', views.loginStudy),
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

锦通

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表