首页 > 数据库 >静态文件配置,pycharm链接数据库,django链接数据库 ORM

静态文件配置,pycharm链接数据库,django链接数据库 ORM

时间:2022-12-10 13:55:05浏览次数:41  
标签:models 数据库 request 链接 post django 目录

静态文件配置

​ 不经常变化的软件,主要针对html文件所使用到的各种资源 eg: css文件、js文件、img文件、第三方框架文件。

django 针对静态文件资源需要创建一个目录统一存放

static目录

该目录下可以存放多种类型目录,还可以新建目录

# 常用目录
css目录
js目录
img目录
utlis目录/plugins目录/libs目录/others目录/
或者不创建

资源访问问题

我们在地址栏中靠路由获取到相应的资源是因为程序员提前开设了资源的接口。(路由与功能关系)

静态文件资源访问

默认情况下无法访问,因为我们没有提前开设静态文件的资源访问接口

配置静态文件接口

想要使用static中的静态资源必须在settings里配置文件

# 方法
在settings 最下面一行添加
STATIC_URL = '/static/'
STATICFILES_DIRS=[
    os.path.join(BASE_DIR,'static')  # 存储静态文件资源的目录名称
# 在html文件内导入静态资源
  <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>
    <script src = "{% static 'bootstrap-3.4.1-dist/js/jqery.js' %}"></script>    
       

后续如果需要更改路由只需要修改settings里最下面的路由

  STATIC_URL = '/static/'  # 修改这里

image

注意事项

如果有多个static目录的话
"""
os.path.join(BASE_DIR, 'static')是存储静态文件资源的目录名称。接口前缀正确之后,会拿着后面的路径依次去列表中自上而下的查找,找到即停止。
"""
"""
当我们在访问一个网页时如果之前访问过,那么网页可能会混存下来访问过的内容,当我们再次访问时会访问到之前的网页,当我们进行如下设置,网页每一次都是真正地向后端发送请求而不是使用缓存的网页(中文:停用缓存,英文:disable cache)。
"""

image

form表单

action 控制数据提交的地址
	1.action=""  数据默认提交给当前页面所在的地址
	2.action="https://www.baidu.com/"  完整地址
 	3.action="/index/"  朝当前服务端的index地址
   	127.0.0.1:8000/index/  # 本地地址不需要填写自动补全
        
method      控制数据提交的方法
	1.get    默认
    2.post    可以改post  method="post"
    form表单默认get请求  
    
    "获取post请求input标签一定要含有name属性。"

请求方法补充

1.get请求 :朝服务端索要数据,也可以携带一些额外的要求。

​ 携带额外数据方式:URL?xxx=yyy&uuu=zzz,但是问号后面携带的数据大小是有限制的(2kb),并且不能携带敏感数据(密码)

2.post请求: 朝服务端提交数据

​ 携带额外数据的方式:请求体,请求体携带数据安全性较高并且没有大小的限制。

​ 前期发送post请求需要注释掉配置文件中的某一行

# settings里
MIDDLEWARE = [
 'django.middleware.security.SecurityMiddleware',
  'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.common.CommonMiddleware',
    # 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

request对象

如果是get请求就返回一个html页面
如果时post请求就获取发送过来的数据

获取当前请求方法

request.method  # 结果是纯大写的字符串
可以根据 结果进行判断 返回不同数据
    if request.method == 'GET':
        return render(request, 'input.html')
    elif request.method == 'POST':
        return HttpResponse('我是赛利亚')
request.POST  # 获取post请求请求体里面携带的数据 
"是一个字典 键对着值 相同的键如果有多个值那么就是键:值列表"
request.post.get()    # 获取值列表里最后一个数据值
request.POST.getlist()	#  获取整个键对应的值列表

image

request.GET		# 获取网址问号后面携带的数据
"结果也是一个字典"
request.post.get()    # 获取值列表里最后一个数据值
request.POST.getlist()	#  获取整个键对应的值列表

image

优化代码
在试图函数中针对不同请求编写技巧
if request.method = 'POST':
    return HttpResponse()
return            #  不需要在进行判断GET

pycharm连接数据库

pycharm初次连接数据库 点开界面右侧 database进入选择数据库后进入界面 输入数据库用户名与密码--点击弹出界面下方三角警示标下载驱动文件---appy后 ok

image

驱动问题解决方法

image

image

django连接数据库

djiango 运行后 自动产生了一个sqlite3是一个小型的数据库 主要用于本地测试
我们需要使用django 来连接MySql 需要修改settings配置
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

修改配置文件
DATABASES = {
    'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': 'day51',
            'HOST': '127.0.0.1',
            'PORT': 3306,
            'USER': 'root',
            'PASSWORD': '123',
            'CHARSET': 'utf8'
        }
}

改完配置后可能会遇到启动报错问题

did you install mysqlclient?

	django1.X版本需要在项目目录下或者app目录下的__init__.py编写代码
    	import pymysql
    	pymysql.install_as_MySQLdb()
	django2.X及以上都可以直接通过下载mysqlclient模块解决
    	pip3.8 install mysqlclient
	ps:该模块windows下载问题不大 主要是mac电脑可能有问题

mac电脑报错

去settings里修改配置文件

image

image

ORM

ORM:对象关系映射

​ 优点:它能够让不会SQL语句的python程序员,使用python面向对象的语法来操作数据库。

缺点:封装程度太高,有时候sql语句的效率偏低,需要自己写SQL语句。

类					表
对象					一条条数据
对象点名字			 数据获取字段对应的值

ORM基本操作

在models.py 模型层编写模型类

class userinfo1(models.Model):  # 类名等于表名
    id = models.AutoField(primary_key=True)   # 字段名= 字段类型+约束条件、
    name = models.CharField(max_length=32)
    pwd = models.CharField(max_length=32) 
    age = models.IntegerField()    # int   

编写好了还不行。需要进行数据库迁移操作

执行数据库迁移相关命令
python38 manage.py makemigrations  # 将操作记录
"在migrations init 文件里"

python38 manage.py migrate   # 同步到数据库
 '''注意每次在models.py修改了与数据库相关的代码 都需要再次执行上述命令'''

ORM基本语句

from app01 import models
1.创建数据
models.类名.objects.create()

models.userinfo1.objects.create(name=name,pwd=pwd,age=age)

2.查询数据
models.类名.objects.filter()
res = models.userinfo1.object.filter(name=name) # 结果是个对象
res[0].字段名 可以拿到该字段的数据

"改,删都需先查询到该数据才能操作"
3.修改数据
models.类名.objects.update()
models.userinfo1.objects.filter(name=name).update(name='lxj')  # 多条数据通过id筛选

4.删除数据
models.类名.objects.delete()
models.userinfo1.objects.filter(id=2).delete()

标签:models,数据库,request,链接,post,django,目录
From: https://www.cnblogs.com/LiaJi/p/16971470.html

相关文章

  • 瀚高数据库专用版建库语句
    瀚高数据库建库语句#第一步#psql第一个参数是数据库第二个是用户. #为了简化期间,建议用户,表空间,架构设置相同.psqlhighgo sysdbacreateusermyapp2206passwo......
  • 数据库授权用户,允许指定网段可以连接mysql
    数据库授权用户,允许192.168.100.0/24网段可以连接mysql1.访问数据库#主机测试[root@node1~]#mysql-uroot-pmysql>showdatabases;+--------------------+|Database......
  • 【Java】【数据库】索引为何使查询变得更快?--B+树
    排序数据的二分查找二分查找的时间复杂度是\(O(log_2n)\),明显快于暴力搜索。索引建立索引的数据,就是通过事先排好顺序,在查找时可以应用二分查找来提高查询效率。所以......
  • pg 数据库和表
    创建数据库语法参数参数作用createdatabasedb_namewithownertemplate使用数据库模板名encodingallowconn默认为true是否允许连接......
  • 后端返回文件流或文件链接,前端如何实现Excel文件自定义文件名导出
    一、问题与需求无聊的一天,后端给了一个Excel文件链接,需要前端实现Excel文件自定义文件名下载很多人肯定会想到一下方法consta=document.createElement('a');a.d......
  • Oracle数据库权限学习--表或者是视图不存在
    Oracle数据库权限学习--表或者是视图不存在摘要本文写于:12.1001:00巴西踢的太烂了帮同事看一下补丁执行报错的问题.问题原因很简单.user_all_table能够后去本用......
  • Oracle数据库实现主键自增
    Oracle不同于MySQL,MySQL只需要在Navicat等工具中点个自动递增按钮就能实现主键自增,Oracle需要创建自增序列才能实现Oracle实现主键自增有多种方式,但是需要创建自增序......
  • 数据库操作
    数据库与sql语句一:数据库定义:用于存储数据的软件特点:表是存储数据的核心表现分类按照类型去划分就会有关系型数据库的非关系型数据库关系型数据库以表的形式......
  • django静态文件配置以及连接mysql
    静态文件配置编写一个用户登录页面静态文件不怎么经常变化的文件主要针对html文件所使用的各种资源css文件js文件img文件、第三方框架文件django怎对静态文件资......
  • Django中forms组件(常用很重要)
    基础:forms组件有什么用1.渲染html代码2.校验数据3.展示提示信息一.如何使用forms组件#如何使用forms组件,必须书写一个forms类#1.导入formsfromdjangoimportforms......