首页 > 其他分享 >django框架之静态文件配置与ORM基本操作

django框架之静态文件配置与ORM基本操作

时间:2022-12-09 21:22:04浏览次数:45  
标签:文件 models request django ORM 基本操作 数据 目录

静态文件配置

1.编写一个用户登录页面
2.静态文件
	不怎么经常变化的文件,主要针对html文件所使用到的各种资源
    css文件、js文件、img文件、第三方框架文件

    django针对静态文件资源需要单独开始一个目录统一存放
    static目录
    	该目录下如果各种类型的文件都多,还可以继续创建目录
        	css目录
           js目录
        	img目录
      utils目录/plugins目录/libs目录/othrs目录/不创
3.资源访问
	我们在地址栏中之所有可以属于路由获取到相应的资源是因为程序员提前开了资源的接口
4.静态文件资源访问
	默认情况下无法访问,因为我们没有提前开设静态文件资源的访问接口

静态文件相关配置

STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static')
]

1.接口前缀
STATIC_URL = '/xxx/'  # 访问静态文件资源的接口前缀(通行证)
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static'),  # 存储静态文件资源的目录名称
    os.path.join(BASE_DIR, 'static1'),  # 存储静态文件资源的目录名称
    os.path.join(BASE_DIR, 'static2'),  # 存储静态文件资源的目录名称
]
"""
接口前缀正确之后,会拿着后面的路径一次到列表中自上而下查找,一旦找到就返回
"""
2.接口前缀动态匹配
{% 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>

用户登录页面初级模板(需要改进)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
{#        <script src="/static/bootstrap-3.4.1-dist/css/bootstrap.min.css"></script>#}

    <script src="/static/jQuery.js"></script>

    <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="row">
                <h1 class="text-center">用户登录</h1>
                </div>
                          <!--居中-->
            <div class="col-lg-8 col-md-offset-2">   <!--偏移两行-->
                <form action="">
                    <p>用户名:
                        <input type="text" class="form-control">
                    </p>
                    <p>密码:
                        <input type="password" class="form-control">
                    </p>
                    <input type="submit" class="btn btn-success btn-block" id="p1" value="用户登录">
                </form>
        </div>
            </div>

</body>
</html>

form表单

action			控制数据提交的地址
	1.action=""		数据默认提交给当前页面所在的地址
 	2.action="地址"	数据默认提交的完整地址
   3.action="/login"  朝当前服务端的login地址提交

method		控制数据提交的方法
	默认是get	
 	可以改为post
请求方法补充:
    get
    	朝服务端所要数据,也可以携带一些额外的要求
   携带额外数据的方式:URL?xxx=yyy&uuu=zzz
   问号后面携带数据的大小是有限制的(2KB)的并且不能携带敏感数据
	 post
    	朝服务端提交数据
        	携带额外数据的方式:	请求体
           请求体携带数据安全性较高并且没有大小限制
        
        
前期发送post请求需要注释掉配置文件中的某一行
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对象

requesst.method		获取请求方式,结果是纯大写的字符串数据
	GET/POST
 
request.POST		获取post请求请求体里面携带的数据
	request.POST.get()	获取列表最后一个数据值
   request.POST.getall()	获取整个列表数据

request.GET			获取网址问号后面携带的数据
	request.GET.get()		获取列表最后一个数据值
   request.GET.getall()		获取整个列表数据

代码展示:
    def login(request):
    print(request.method)   # POST
    if request.method == 'POST':
        print(request.POST)  # <QueryDict: {'name': ['jason'], 'password': ['123']}>
        print(request.POST.get('name'))  # jason
        print(request.POST.get('password'))  # 123
        return HttpResponse("登录成功")
    return render(request, 'aa.html')

pycharm连接数据库

1.pycharm初次连接数据库 需要下载对应的驱动

image

django连接数据库

django自带的sqlite3是一个小型的数据库 功能比较少 主要用于本地测试
我们实际项目中都会替换掉它

默认配置sqlite3
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

修改为
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'db',
        'HOST': '127.0.0.1',
        'PORT': 3306,
        'USER': 'root',
        'PASSWORD': '123',
        'CHARSET': 'tuf8'
    }
}

image

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

ORM简介

ORM:对象关系映射
    能够让不会SQL语句的python程序员 使用python面向对象的语法
    
    
类 			映射为				表
对象		   映射为			  一条条数据
对象点名字	 映射为			数据获取字段对应的值

ORM由于高于封装了SQL,所以有时候效率较低,我们需要自己写SQL

ORM基本操作

1.先在models.py中编写模型类
	class GirIsInfo(models.Model):
        # 字段名 = 字段类型+约束条件
        id = models.AufoField(primary_key=True)
        name = models.CharFiled(max_length=32)
        age=models.IntegerFiled()
2.执行数据库迁移相关命令
	python38 manage.py makemigrations	将操作记录到小本本上
 	python38 manage.py migrate		   将操作同步到数据库上

"""
注意每次在models.py修改了与数据相关的代码,都需要再次执行上述命令
"""
问题描述
  执行python3 manage.py makemigrations提示:No changes detected

解决方案

第一种解决方案:需要在makemigrations后面加应用名称,即python3 manage.py makemigrations App,App是我的应用名称

第二种解决方案:执行python3 manage.py makemigrations --empty App

orm基本语句

from app01 import models
models.类名.objects.create()		创建数据
models.类名.objects.filter()		查询数据
models.类名.objects.undate()		修改数据
models.类名.objects.delete()		删除数据
修改数据最好写为
models.类名.objects.filter(条件).undate(字段名=数据值)
# 修改某一个条件符号的,把某一个字典修改为新的
models.类名.objects.filter(条件).delete()
# 删除某一个符合条件的记录

标签:文件,models,request,django,ORM,基本操作,数据,目录
From: https://www.cnblogs.com/zhanghong1229/p/16970034.html

相关文章

  • Django框架2
    今日内容概要静态文件配置request对象方法pycharm连接MySQLdjango连接MySQLdjango模型层初识基本ORM操作今日内容详细静态文件配置1.编写一个用户登录界面2.静......
  • django 02 数据库相关操作
    静态文件配置#1.静态文件不经常变化的文件,主要是html文件所使用的资源css、js、img、第三方框架文件django针对静态文件资源需要单独开放......
  • Django静态文件配置、form表单与request对象
    目录一、静态文件配置1.编写一个页面2.静态文件3.资源访问4.静态文件资源5.静态文件相关配置二、form表单1.action属性2.method属性三、request对象1.request.method2.re......
  • Django:ORM简介与配置
    目录一、Django连接数据库1.使用MySQL数据库首先安装驱动程序2.Django配置MySQL3.查看执行的SQL语句的配置二、ORM简介1.ORM:对象关系映射2.ORM基本操作1.先在models.py中编......
  • Django2
    静态文件配置1.编写一个登录功能1.创建django项目并创建一个app2.在urls.py添加一组对应关系3.在app的views.py中编写登录核心逻辑4.利用三板斧与前端做交互2.为......
  • Docker Warning : the backing xfs filesystem is formatted without d_type support
    DockerWarning:thebackingxfsfilesystemisformattedwithoutd_typesupporthttps://www.cnblogs.com/zhangeamon/p/7918567.htmllinux7.2不能识别存储,Centos7......
  • Winform自动更新之AutoUpdater.NET
     AutoUpdater.NET(https://github.com/ravibpatel/AutoUpdater.NET)的原理大致是从服务器上(IIS站点)下载包含更新信息的XML文件,通过下载的XML文件获取Winform等桌面......
  • spring mvc环境之数据库ORM组件Mybaits配置(九)
    spring引入Mybaits功能,还是把握住主要步骤,1.引入相关jar包(spring-jdbc、spring-orm,spring-aop、spring-tx(有orm就可以)、spring-oxm(无关)、mybatis、mybatis-spring);2......
  • Django ORM之F与Q查询
    1.F查询fromdjango.testimportTestCase#Createyourtestshere.importosif__name__=="__main__":  os.environ.setdefault("DJANGO_SETTINGS_MODULE","da......
  • Django 聚合分组、F对象的使用、聚合分组增加额外字段的方式
    DjangoQuerySet查询表达式F对象简单理解为可以通过F实现数据库操作,而非在Python内存中操作。通过F对象实现。filter()条件过滤或者对象级别的操作。让数据库,而不是......