zoukankan      html  css  js  c++  java
  • Django简单的使用及一些基础方法

    一、静态文件配置

    1. 什么是静态文件

    网站所使用到的提前写的css、js、第三方的前端模块、图片、都叫做静态资源。

    只要是变量是写死的,是不可以动态改变的,那这个文件就是静态文件。

    2. 静态文件的用法

    1. 默认情况下所有的html文件都是放在templates文件夹内。

    2. 默认情况下网站所用到的静态文件资源全部会放在static文件夹下。

    3. 在static文件夹内部还会再建其他文件夹,为了更加方便的管理文件。

      css   文件夹
      js    文件夹
      font  文件夹
      img   文件夹
      Bootstrap
      fontawesome
      
    4. django中,需要你自己手动创建静态文件存放的文件夹

      # settings 文件中配置 在最后
      
      STATIC_URL = '/static/'  # 访问静态文件资源接口前缀,通常情况下接口前缀的名字也叫static,你也可以设置成任意喜欢的,这其实只是一个地址的后缀而已。
      
      # 手动开设静态文件访问资源,静态资源所在的文件夹路径
      STATICFILES_DIRS = [
          # 将static文件里面所有的资源暴露给用户
          os.path.join(BASE_DIR,'static'), 
          os.path.join(BASE_DIR,'static1'),  
          # os.path.join(BASE_DIR,'static2'),  
      ]
      
    5. 最后在HTML中可以导入static中的css等静态文件。

      <link href="../static/文件夹/文件名" rel="stylesheet"
      

    3. 静态文件的动态绑定

    如果在实际需求中,需要修改settings中的STATIC_URL的值,那这个时候,所有导入静态文件的文件都需要修改路径了。如果你有很多HTML文件,是不是要一个一个得修改css和js文件的路径?这样岂不是很麻烦?

    Django也帮我们做了优化。我们可以在导入静态文件时,使用Django中的模板语言,将STATIC_URL路径动态加载到导入静态文件的路径。这样,不管你STATIC_URL变成了什么值,我都可以通过STATIC_URL这个变量名本身来取它相对应的值了。

    也就是说,我不需要知道你变成什么样子,我只要用STATIC_URL这个变量名就好了。

    {% load static %}   {# 这里的load就相当于python中的import,而static就是一个模块,这个模块就可以将STATIC_URL导入过来,获取其实时的动态变化的值 #}
    <link rel="stylesheet" href="{% static 'bootstrap-3.3.7-dist/css/bootstrap.min.css' %}">
    <script src="{% static 'bootstrap-3.3.7-dist/js/bootstrap.min.js' %}"></script>
    

    二、请求方式与相应

    1. get请求

    (from表单默认是get请求)

    http://localhost:8000/login/?username=tbw&password=qwe

    • get 请求也能携带参数
    • 特点:url?xxx=xxx&yyy=yyy
      1. 携带的数据不安全
      2. 携带的数据大小有限制
      3. 通常只会携带一些不是很重要的数据

    2. post请求

    前期我们在朝后端提交post请求时,如果出现403的情况,有可能你需要去配置文件中注释掉一行内容

    # 中间件
    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',
    ]
    

    3. Django后端视图函数处理请求

    自定义login接口:

    if request.method == 'POST':
        print('接收到POST请求!')
        print('接收到前端期缴的数据为:',request.POST)
        username = request.POST.get('username')
        password = request.POST.get('password')
    
        # # 默认取出post字典value列表的最后一个元素
        # print(username,type(username))
        # print(password,type(password))
    
        return HttpResponse('后端已收到!')
    
    # if request.method == 'GET':
    print('接收到GET请求!')
    return render(request, 'login.html')
    

    三、request方法初识

    1. request.method:获取请求方式,并且是纯大写的字符串

    2. request.POST:获取用户提交的post请求数据

      当前端朝后端提交数据的时候,会朝当前页面对应的借口提交数据。

      # 获取用户数据
      request.POST.get()  # 默认只会获取列表最后一个元素
      request.POST.getlist()  # 如果你想获取列表 用getlist()
      
    3. request.GET:获取用户提交的get请求数据

      # 获取用户数据
      request.GET.get()  # 默认只会获取列表最后一个元素
      request.GET.getlist()  # 如果你想获取列表 用getlist(	
      

    四、Django连接数据库

    有两部步操作

    注意!

    1. 之后在写django项目的时候 一个django就对应一个数据库
    2. 不要出现多个项目使用同一个数据的情况!!

    1. 设置Django默认连接MySQL数据库

    在settings中声明连接的是mysql数据库,而不是默认的sqlite3数据库。

    # sttings
    
    # 将默认的数据库连接注释掉或者直接修改
    # DATABASES = {
    #     'default': {
    #         'ENGINE': 'django.db.backends.sqlite3',
    #         'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    #     }
    # }
    
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': 'day50',
            'USER':'root',
            'PASSWORD':'123',
            'HOST':'127.0.0.1',
            'PORT':3306,
            'CHARSET':'utf8'
        }
    }
    

    2. 设置Django使用pymysql模块连接

    告诉django不要用默认的mysqldb模块连接mysql,而是要用pymysql。

    你可以在项目名下的__init__.py中书写,也可以在应用名下的__init__.py中书写声明。

    import pymysql
    pymysql.install_as_MySQLdb()
    # 两句话就可以了
    

    五、Django orm简介

    1. orm介绍

    orm:对象关系映射
    类----------->表

    对象--------->数据
    
    对象点属性---->字段对应的值
    

    2. orm的优缺点

    优点:能够让不会数据库操作的人也能够简单方便去操作数据库。

    缺点:封装程度太高,有时候会出现查询效率偏低的问题

    • 所以在工作中,简单的数据库用orm操作。
    • 复杂的,追求速度,就需要你手动书写sql语句来操作mysql。

    3. Django操作orm

    书写模型类
    去应用下的models.py中书写模型类(就是类)

    六、数据迁移(同步)

    python3 manage.py makemigrations  # 将数据库的修改 记录到一个“即将执行的操作记录本”上(migrations文件内),待会会一起执行这个小本本里面的操作。
    python3 manage.py migrate  # 将修改操作真正的同步到数据库中
    

    通过这两条命令创建的表会自动在表名前加一个app名的前缀,用以区分不同的app表。

    七、模型表相关操作

    1. 模型表字段的查增改删

    1. 字段的修改

      直接修改代码 然后执行数据库迁移命令即可(两条一条不能少)

    • 方式1 设置默认值

      email = models.EmailField(default='123@qq.com') # varchar

    • 方式2 允许字段为空

      phone = models.BigIntegerField(null=True)

    • 方式3 直接在提示中给默认值

      gender = models.CharField(max_length=32)

    1. 字段的删除

      直接注释掉对应的字段 然后再执行数据库迁移命令即可(谨慎使用)

    2. 模型表数据的查增改删

    2.1 查

    data = models.User.objects.filter(username=username)  # <QuerySet [<User: User object>]>
    """
    filter返回的结果是一个"列表",里面才是真正数据对象
    filer括号内可以放多个关键字参数 这多个关键字参数在查询的时候 是and关系
    """
    
    user_list = models.User.objects.all()  # models.User.objects.filter()
    """
    结果是一个"列表" 里面是一个个的数据对象
    """
    

    2.2 增

    user_obj = models.User.objects.create(username=username,password=password)
    print(user_obj,user_obj.username,user_obj.password)
    # create方法会有一个返回值  返回值就是当前被创建的对象本身
    

    2.3 改

    models.User.objects.filter(id=edit_id).update(username=username,password=password)
    """
    批量操作  会将filter查询出来的列表中所有的对象全部更新
    """
    

    2.4 删(一般情况下不用)

    models.User.objects.filter(id=delete_id).delete()
    """
    批量操作  会将filter查询出来的列表中所有的对象全部删除
    """
    
  • 相关阅读:
    植物:吊兰
    植物:文竹
    理论:混沌理论
    图书-数学:《数学之美》
    调味品:味精
    linux查看文件大小df-du
    linux防火墙开启-关闭
    tomcat端口号、日志、启停
    chmod
    jdk-tomcat环境变量设置
  • 原文地址:https://www.cnblogs.com/bowendown/p/11922724.html
Copyright © 2011-2022 走看看