zoukankan      html  css  js  c++  java
  • Django配置及ORM

    Django配置及ORM

    一、静态文件配置

    什么是静态文件请参考

    django在配置(settings)文件中给你提示了配置文件的配置信息,你只需要按照固定的语法格式书写即可提示对应的静态文件的资源

    基本配置

    settings下

    STATIC_URL = ‘/static/’ 访问后端静态资源的接口前缀,默认情况下接口前缀名与静态文件名保持一致

    HTML文件下

    1. 你想要访问后端的静态资源,必须以接口前缀开头,后面跟上具体的文件路径,才能访问到对应的资源。
    <link rel="stylesheet" href="/xxx(前缀名)/bootstrap-3.3.7-dist/css/bootstrap.min.css">
    
    1. 当你的接口前缀正确之后,会拿着后面的路径依次去下面列表中的每一个文件夹下查找的资源,顺序是从上往下依次查找,如果都没有找到才会报错。
    STATICFILES_DIRS = [
        os.path.join(BASE_DIR,'static'),  # 这里的static才是你文件夹的路径
        os.path.join(BASE_DIR,'static1'),
        os.path.join(BASE_DIR,'static2'),
    ]
    

    templates文件下

    HTML文件解决上面动态绑定的问题

    ==记得先导入bootstrap的文件==
    
    {% load static %}
    <link rel="stylesheet" href="{% static 'bootstrap-3.3.7-dist/css/bootstrap.min.css' %}"> #bootstrap的css文件路径
    <script src="{% static 'bootstrap-3.3.7-dist/js/bootstrap.min.js' %}"></script>#bootstrap的js文件路径
    

    在这里插入图片描述

    二、form表单

    form表单默认是以get请求提交数据的

    http://127.0.0.1:8000/login/?username=admin&password=123
    #get请求直接显示用户提交的信息
    

    action

    1. 不写,默认朝当前的地址提交数据
    2. 全路径
    3. 后缀(/index)

    提交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',
    ]
    

    视图函数应该做到针对不同的请求,做出不同的处理逻辑

    eg:

    1. get请求来,应该只需要返回一个HTML文件
    2. post请求来,应该获取用户提交的数据,然后做进一步的处理

    你必须要能够判断出当前请求到底是什么请求

    三、request对象方法

    获取前端请求方式(get/post)

    • request.method 结果是一个纯大写的字符串,GET/POST

    • request.POST 获取post请求提交的数据,类似于是一个大字典

      # <QueryDict: {'username': ['admin', 'jason'], 'password': ['123']}>
      				request.POST.get()  # 只会取列表最后一个元素
      				request.POST.getlist()  # 取出整个列表
      
    • request.GET 获取符合GET请求携带数据格式的数据,url?xxx=yyy&zzz=111

      # <QueryDict: {'username': ['admin', 'jason'], 'password': ['123']}>
      				request.GET.get()  # 只会取列表最后一个元素
      				request.GET.getlist()  # 取出整个列表
      

    通常情况下针对不同的请求应该做不同的处理,而一般情况下GET请求次数远远多于POST请求,所以我们应该针对非GET请求做出逻辑判断,将get请求直接写在函数体内而不是做判断.

    def login(request):
    		要给用户返回一个登陆页面
    		print('我被触发了')
    		获取前端请求方式
    		if request.method == 'GET':
    		    # get逻辑
    		    return render(request, 'login.html')
    		elif request.method == 'POST':
    		    # post逻辑
    		    # print(request.method,type(request.method))  # GET <class 'str'>  POST <class 'str'>
    		    # 获取数据 之后...
    		    return HttpResponse('收到了你的数据 马上处理')
    		"""为了减少代码的层级:一般情况下视图函数处理get请求较多 所以可以直接再函数体内先写get请求对应的逻辑
    		将其他请求利用request.method做出区分
    		"""
    		if request.method == 'POST':
    			return HttpResponse('收到了')
    		return render(request,'login.html')
    

    四、Django连接MySQL数据库

    连接数据库需要提前创建好对应的库

    1. 先去配置文件中配置相关参数

      DATABASES = {
          'default':{
              'ENDINE':'django.db.backends.mysql',
       'NMAE':'库名',
       'HOST':3306,
       'USER':'root',
       'PASSWORD':'123',
       'CHARSET':'utf8'
          }
      }
      
      
    2. 在项目名或者应用名下面的——init——文件中告诉django使用pymysql链接数据库而不是默认的mysqldb

      import pymysql
      pymysql.install_as_MySQLdb()
      

    五、Django orm简介

    手动创建自己的库名后,django能自动帮你创建表

    orm对象关系映射

    ---->表
    对象---->记录
    属性---->字段值
    

    作用:能够让一个不会数据库操作的人也能够通过python面向对象语法,句点符来简单快捷的操作数据.

    操作增删改查之前,需要去对应的models.py文件中书写你的模型类

    class User(models.Model):
        id = models.AutoField(primary_key=True)
        name = models.CharField(max_length=32)
        password = models.IntegerField()
    

    数据库迁移(同步)命令

    1. python3 manage.py makemigrations #仅仅是将你对数据库的改动记录到某个地方(migrations文件夹) 
    2. python3 manage.py migrate	#将改动真正的同步到数据库中
    

    上面两个命令永远是成对出现的,只要执行了1,就必须执行2才会真正的将数据同步到数据库

    字段的增删改查

    1. 字段的增

      1. 要么给该字段设置默认值
      2. 要么运行该字段可以为空
    2. 字段的改

      修改models代码,之后执行数据库迁移命令即可.

    3. 字段的删

      只要注释掉对应的字段即可,执行数据库迁移命令就会将对应的字段及数据信息全部删除(数据库的删除慎用)

    数据的增删改查

      1. filter()

        from app(功能应用) import	models
        res = models.User.objects.filter(username='redwei')  #select *from user where username='redwei'
        #返回的结果是一个列表,支持索引取值但是不支持负数索引,并且不推荐使用索引,推荐使用它给你封装好的方法
        user_obj = res.firse()
        #filter方法查找,条件不存在的时候,不会报错,返回的是一个空列表
        '''
        filter括号内直接放多个关键字参数,并且多个关键字参数之间是and关系
        res = models.User.objects.filter(username='redwei',password='123') #select *from user where username='redwei' and password='123';
        '''
        
      2. 查所有的数据

        1. filter()	#括号内不写条件拿所有
        2. all() #查询所有数据
        #二者查询结果都是这样的
        <QuerySet [<User: jason>, <User: egon>, <User: sean>, <User: admin>, <User: 你不行>]>
        
      1. create()

        user_obj = models.User.objects.create(name=username,password=password)
        #该方法有返回值,返回值就是当前被创建的对象本身
        
      2. 对象的绑定方法

        1.先生成一个user对象
        user_obj = models.user(name=username,password=passowrd)
        2.调用对象的绑定方法
        user_obj.save()
        
    1. 根据用户点击的对应数据进行删除(HTML文件需要绑定唯一关系)

      获取数据的唯一id
      delete_id= request.GET.get('user_id')
      models.user.objects.filter(id=delete_id).delete()	#将filter过滤出来的数据全部删除
      
    2. 根据数据id获取数据并且展示到前端页面功用户查看修改

      方式一(推荐)
       edit_id= request.GET.get('user_id')
      models.user.object.filter(id=edit_id).update(name=username,password=password)
      
      方式二(了解)
      1. 先获取数据对象
      edit_obj = models.user.objects.filter(id=edit_id).first()
      2.  在修改对象属性
      edit_obj.name = username
      3.调用对象的绑定方法保存
      edit_obj.save()
      
    我把月亮戳到天上 天就是我的 我把脚踩入地里 地就是我的 我亲吻你 你就是我的
  • 相关阅读:
    XAF中实现Combox属性编辑(官方)
    XAF 支持多数据库
    XAF 如何使用复合主键和复合外键
    如何禁止双击ListView记录显示DetailView?
    XAF中主从列表模式下获取当前主对象实例
    使用一个非持久字段PersistentAlias
    XAF 如何将文件存储在文件系统中而不是数据库中
    XAF中如何制作弹出窗体选择数据到ListView列表
    XAF 如何用其他线程更新对象
    XPO中 聚合函数的使用(Count,Max,Sum,Min)
  • 原文地址:https://www.cnblogs.com/zhulipeng-1998/p/12863882.html
Copyright © 2011-2022 走看看