zoukankan      html  css  js  c++  java
  • Django 02

    静态文件配置

    • 网站所使用到的, 提前写好的css/js/第三方模块/图片等等, 都是静态文件
    • 默认情况下, 网站所用到的静态文件资源全部都会放在 static 文件下 (手动创建)
      • css文件夹
      • js文件夹
      • font文件夹
      • img文件夹
      • Bootstrap文件夹
    • STATIC_URL = "/static/" 访问静态文件的url前缀
    • 在settings配置文件中手动添加静态文件路径
    # 手动添加静态文件访问路径
    STATICFILES_DIRS = [
        os.path.join(BASE_DIR, "static")  # 将static文件夹当中的资源暴露给用户
    ]
    
    • 静态文件动态绑定
    {% load static %}
        <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>
    

    request方法

    • request.method 获取用户请求的提交方式
    • request.POST 获取的数据格式为 <QueryDict: {'username': ['bigb'], 'password': ['123']}>
      • request.POST.get("username") 获取的是username对应的列表当中的最后一个值
      • request.POST.getlist("username) 获取的还是username对应的列表
    • request.GET 获取用户GET请求携带的数据
      • request.GET.get()
      • request.GET.getlist()

    pycharm连接数据库

    django连接MySQL

    配置文件

    • 在django的settings文件中找到 DATABASES
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',  # 指定数据库的类型, 将sqlite3改为mysql
            'NAME': 'day52',  # 指定库名
            'USER': 'root',
            'PASSWORD': '123',
            'HOST': '127.0.0.1',
            'PORT': 3306,
            'CHARSET': 'utf8'
        }
    }
    

    导入并修改连接到mysql的模块

    • 当我们修改了数据库为MySQL后, 再运行项目时会报错
    
    """
    django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: No module named 'MySQLdb'.
    Did you install mysqlclient or MySQL-python?
    
    这时我们需要一个连接MySQL的客户端, 但django默认的客户端是MySQLdb, 这是一个老模块, 我们用pymysql模块来代替它
    """
    
    • 导入pymysql模块, 并替还掉django默认的mysqldb
      • 在项目文件夹下的__init__.py 文件中导入和修改
      • 在app文件夹下面的__init__.py文件中导入和修改
    import pymysql
    
    pymysql.install_as_MySQLdb()
    

    django orm

    创建模型类

    • 在app下面的model.py中创建
    class User(models.Model):
        # 当没有指定主键的时候, django会自动创建主键id
        id = models.AutoField(primary_key=True)
        # django里面只有varchar()
        username = models.CharField(max_length=255)
        password = models.CharField(max_length=255)
    

    数据库迁移

    • python manage.py makemigrations 将数据库的修改, 记录到migrations文件夹内(仅仅是记录)
    • python nanage.py migrate 将修改操作真正的同步到数据库中
    • 只要修改了models里面跟数据相关的代码, 就必须执行上面两条命令

    字段操作

    • 修改
      • 直接修改代码, 然后执行数据库迁移两条指令就行了
    • 增加 (注意: 当我们对已经有记录数据的表添加字段时候, 必须要1.设置默认值, 2.允许为空)
      • 设置默认值 adress = models.CharField(max_length=255, default="Shanghai")
      • 允许为空 adress = models.CharField(max_length=255, null=True)
      • 根据提示设置默认值
    • 删除
      • 直接注释对应的字段代码, 然后执行数据库迁移两条指令 (谨慎使用, 字段下面的数据会丢失!!!)

    表记录操作

    • 查询
      • models.User.objects.filter(username="bigb") 按条件查询
      • 获取到的数据格式是列表套对象 <QuerySet [<User: User object>]>
      • models.User.objects.all() 查询所有
    • 增加
      • user_obj = models.User.objects.create(username="bigb", password="123")
      • create方法会有一个返回值, 就是该对象本身
    • 修改
      • user_obj.update(username="blake")
      • update方法也可以对filter()方法得到的对象列表进行批量操作
    models.User.objects.filter(depart="RD").update(office="A-3")
    
    • 删除
      • user_obj.delete()
      • delete方法同样可以进行批量操作

    注意

    • form表单的默认提交方式是get, 而get提交也可以携带数据, 但是:

      • get请求携带数据不安全 (会显示在浏览器的地址里面)
      • get请求携带的数据大小有限制
      • 可以修改form表单标签里面的method属性为 method="post"
    • form表单标签的action属性

      • action="", 不写既表示朝当前页面所在地址提交数据, 可以在urls.py中该页面路由对应的视图函数中接收
      • action="/index", 只写后缀, 既表示朝该地址提交数据, 可在urls.py中该路由对象的视图函数中接收
      • action=ww.google.com" 写全路径, 既表示朝该路径提交数据
  • 相关阅读:
    VMWare: eth0: error fetching interface information : device not found
    谷歌插件学习笔记:把iframe干掉……
    离散事件模拟(银行业务模拟。实现算法3.6、3.7的程序)
    利用非循环顺序队列采用广度搜索法求解迷宫问题(一条路径)
    队列的顺序存储结构(循环队列)
    队列的顺序存储结构(出队元素时不移动元素,只改变队头元素的位置)
    循环队列-队列的顺序表示和实现
    链队列-队列的链式表示和实现
    栈与递归的实现(Hanoi塔问题等等)
    栈的应用举例3(表达式求值)
  • 原文地址:https://www.cnblogs.com/bigb/p/11925318.html
Copyright © 2011-2022 走看看