首页 > 其他分享 >django简介2

django简介2

时间:2022-08-31 17:11:11浏览次数:50  
标签:请求 models 简介 request django 前缀 页面


一、静态文件的配置

'''
我们之所以在浏览器上输入不同的路由可以访问到不同的内容 
是因为我们提前在url(路由层)中开设了想要的资源接口  
如果访问不到那么就是没有开设
'''
# 我们可以编写一个登入功能
# 1.开设登入界面接口
# 2.登入界面需要使用bootstrap渲染页面或则自己编写css文件
        '''而这些写了之后不怎么需要改动的文件 就可以称之为静态文件
            我们一般把这些静态文件放在static文件中
            然后根据功能的不同还可以分为不同的文件夹
            1.第三方框架
            2.css文件夹
            3.js文件夹
            4.img文件夹
            ...
            然后根据页面的不同这些文件也还能在细分
            就是为了能够好管理'''
# 3.然后在页面上的cdn导入的标签都可以删除了 变成本地导入即可
      /static/bootstrap-3.4.1-dist/css/bootstrap.min.css
# 4.但是这个时候访问页面 渲染页面的路径没加载成功
   http://127.0.0.1:8000/static/bootstrap-3.4.1-dist/css/bootstrap.min.css  静态文件访问不到
     因为我们并没有开设静态资源访问的接口
# 5.开设静态文件访问接口
    '''按理说我们应该去url.py文件中去开设一个接口文件的 但是静态文件资源使用频率很高 所以
     只要是一个web项目肯定都需要 所以django为了避免开发者繁琐 提供了静态资源的配置文件 只需要填写固定的配置即可开设资源接口
      在stiings中下添加下列固定代码
         STATICFILES_DIRS = [
        os.path.join(BASE_DIR, 'static')
    ]'''
# 6.配置文件中有一个配置
    STATIC_URL = '/static/' 
    STATICFILES_DIRS = [] 
    '''就是第一个配置有什么作用
      为什么设置静态文件需要用到列表'''
    1.第一个是接口前缀
        /static/bootstrap-3.4.1-dist/css/bootstrap.min.css
        '''当在页面上写上这个接口前缀才能找到静态文件一旦html上的导入样式的路径前缀跟配置文件不一样就会找不到
        这个路径的前缀如果跟配置文件中一样那么就会那这后面的路径与下面的列表中对比如果有就会找到   没有就找不到页面就渲染不了
        当前缀不一样业一样找不到渲染不了'''
    2.列表
        ''' 因为如果一个django项目需要多个静态文件那么所有的静态文件的路径就都放到在个列表中 然后多个静态文件的前缀要跟上面的接口前缀一样'''
# 7.接口前缀绑定
    ''' 如果有时候我们需要修改配置文件的接口前缀 那么我们就需要把页面上的前缀给修改了 但是如果页面上有很多个路径的前缀都需要修改 那么这个时候就会很麻烦 那么这个时候django就帮我们设定了一个语法'''
# 这个时候我们只需要在页面上这么写即可:
{% load static %}
<link rel="stylesheet" href="{% static 'bootstrap-3.4.1-dist/css/bootstrap.min.css' %}">
# 这个时候不过配置文件的接口前缀不管怎么改都可以访问的到

二、请求方式

'''url:请求资源定位符(网址)'''
# 1.在form表单中有两种请求方式
     #  1.GET请求
           '''朝服务端索要数据
           可以在网址后面携带一些数据 用?隔开
               eg:url?xxx=yyy&zzz=ooo&aaa=bbb
           上述携带数据有两种限制
                1.携带的数据不能是敏感数据
                2.携带的数据的大小有限制2kb~4kb
            GET请求没有请求体'''
        # 2.POST请求
            '''朝服务端提交数据
            也可以携带数据
                数据都是放在请求体中 数据大小没有限制'''
# 2.form表单默认是GET请求
        可以通过method属性修改请求方式
        method = "post"
        action  # 控制数据的提交地址
        方式1:不写  朝当前网页地址提交
        方式2:写后缀 '/index/'  自动补全IP:PORT
        方式3:写全称  https://baidu.com/
# 3.提交psot请求页面会报错 403
    前期我们只要去配置文件中注释一句代码即可
        MIDDLEWARE = [
    # 'django.middleware.csrf.CsrfViewMiddleware',
]

三、request对象方法

# 当页面上有两个input框需要输入姓名和密码
<form action="" method="post">
    <input type="text" name="username">
    <input type="text" name="password">
    <input type="submit"  value="提交">
</form>
# 1.后端获取form表单发出的两个请求方式
    request.method  # 获取请求方式  结果是大写的字符串
    # 获取POST请求提交的普通数据
    request.POST  # 获取POST请求发送过来的普通数据(不包含文件数据)
    # request.POST 获取的数据可以当做是一个字典<QueryDict: {'username': ['jason'], 'password': ['123']}>
        request.POST.get('username')  # 默认获取列表中最后一个值
        request.POST.getlist('username')  # 获取键对应的整个列表 不过有几个值
    # 获取url后面携带的非敏感数据GET请求
    request.GET  # 结果是一个QueryDict 也可以看成是字典处理
    request.GET.getlist()  # 获取键对应的整个列表  不过值有多少个
    request.GET.get()  # 默认获取列表最后一个值
'''由于GET请求更加常见 POST请求次之 所以还可以按照下列方式简写'''
if request.method == 'POST':
    return HttpResponse('加油')
'''默认让试图函数处理GET请求'''
return render(request, 'login.html')  # 因为GET请求也相当于返回一个页面

四、pycharm链接MySQL

'''其实pycharm也可以充当许多数据库的客户端'''
    # 首先要找到页面上的database
            页面右侧边栏有
            最左下角正方形点开也有
   # 如果两个地方都没有那么需要下载database插件如果插件
        settings >>>  plugins  搜索database 下载即可
    # 如果下载插件还没有 那么就重装pycharm

# 首次链接数据库需要下载驱动
    Download missing driver files
# 下载好之后点击Test Connection测试是否能够链接上
# 测试链接如果不通过 则需要换驱动重新下载即可
        Driver MySQL MySQL fro 5.1

 

 五、django链接MySQL

# django默认使用的是sqlite3 但是这款数据库一般只用于本地测试 功能较少

# 1.配置文件中修改配置
    DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',  # 指定数据库软件名称
        'NAME': 'day55',  # 指定库名
        'USER': 'root',
        'PASSWORD': '',  # 填写密码
        'HOST': '127.0.0.1',
        'PORT': 3306,
        'CHARSET': 'utf8'
    }
}
#2.指定链接MySQL的模块
    '''django1.11 版本需要在项目或者应用目录下的__init__.py中编写一行代码
        import pymysql
             pymysql.install_as_MySQLdb()
      django2.2 以上版本需要使用mysqlclient模块'''

六、orm简介

# ORM:对象映射关系
# 就是通过python代码映射成SQL语句
python                            MySQL
类                映射成               表
对象             映射成               记录
对象点属性     映射成               字段对应的值
"""
ORM的存在可以让不会MySQL的python程序员 使用python的语法简单快捷的操作MySQL
"""
好处:提升了开发效率
坏处:封装了SQL语句 有时候可能效率不高 还需要认为编写SQL调优

七、ORM基本操作

# 1.我们首先要去应用下的models.py文件下创建模型类
    class User(models.Model):  # 类似于定义了表名
        # id int primary key auto_increment
        id = models.AutoField(primary_key=True)  # 类似于定义了主键
        # name varchar(32)
        name = models.CharField(max_length=32)  # 类似于定义了普通字段
        # pwd int
        pwd = models.IntegerField()  # 类似于定义了普通字段
# 2.数据库的迁移命令
        这个时候数据库还是没有这个表的我们要编写两行命令才行:
            python3 manage.py makemigrations
                # 将models中的有个数据库的操作记录下来存到migrations文件夹
             python3 manage.py migrate
                    # 将创建的表迁徙到数据库中
             ps:可以简写 也可以指定应用单独迁移/同步
# 3.表名的特征
    Users              app01_users
    由于django支持多个应用 为了区分不同应用下可能会出现相同的表名
    所以自动加上了应用的前缀 因为同一个应用下不可能出现相同的表名(只要是正常的程序员都不会犯这种错误)
# 4.表的主键在orm中 可以不写 orm会自动帮你添加一个id的主键
    如果你需要主键的名称不叫id 只能自己创建    
# 5.每次修改了跟数据库相关的python代码 都需要重新执行迁移命令
# 6.在pycharm迁移命令还可以简便操作
       在tools中点击 run mange.py task
       就可以在pycharm弹出的终端编写迁移命令 
       可以不用填写前缀直接写关键字:
        makemigrations
        migrate

八、ORM语法

# 查
    res = models.User.objects.filter(name='jason')
    print(res)  # <QuerySet [<Users: Users object>]>  可以看成是一个列表套数据对象
    print(res[0])  # Users object  
    print(res[0].name)  # jason
    # 如果没有索引值会直接报错 所以推荐使用first()
    res = models.User.objects.filter(name='jason').first()
    print(res.name)  # jason
# 增
    user_obj = models.Users.objects.create(name='jack',pwd='111')
        # 主键可以不用写
# 改
    models.User.objects.filter().update(name='jasonNB')
    # 如果filter里面不写条件 会直接修改全部
    models.User.objects.filter(id=1).update(name='jasonNB')
    # 写条件就只会修改 id等于1的字段
# 删
    models.User.objects.filter().delete()
    # filter不写条件直接删全部
    models.User.objects.filter(id=4).delete()
    # 写了条件就只会删除id等于4的字段

九、外键字段

'''
MySQL
    一对多
        外键字段建在多的一方
    多对多
        外键字段建在第三张关系表
    一对一
        外键字段建在查询频率较高的表中'''

ORM:
    一对多
        外键字段也是健在多的一方  在多的一方的类中写下面的代码:
        publish = models.ForeignKey(to='Publish',on_delete=models.CASCADE)
        # publish:字段名  ForeignKey:一对一关键字  to后面写关联的表名  on_delete:级联删除(django1x中可以不写)
    多对多
        外键字段直接写在某张表中  orm会帮我们自动创建第三张表
        authors = models.ManyToManyField(to='Authors')
        # authors:字段名  ManyToManyField:多对多关键字  to后面写关联的表名  多对多不用写级联删除
    一对一
        外键字段建在查询频率高的表
         detail = models.OneToOneField(to='AuthorDetail',on_delete=models.CASCADE)
        # detail:字段名  OneToOneField:一对一关键字  to后面写关联的表名  on_delete:级联删除(django1x中可以不写)

 

 

 

 

标签:请求,models,简介,request,django,前缀,页面
From: https://www.cnblogs.com/stephenwzh/p/16643765.html

相关文章

  • ClickHouse 简介
    ClickHouse是俄罗斯的Yandex于2016年开源的一款MPP架构(大规模并行处理)的列式存储数据库(DBMS),使用C++语言编写,主要用于在线分析处理查询(OLAP),能够使用SQL查询实时生成分析......
  • 09 | 阿里云服务器从0配置django环境
    首先要租一台阿里云服务器,注意操作系统为centos7.说一个坑!!如果是ubuntu那么可能会造成有些python的版本不可以安装。配置服务器yumupdateyuminstall-ycr......
  • web框架与django
    web框架手写web框架1.web框架可以看成是一个功能强大的socker服务端先根据socket套接字编写一个简易的服务端importsocketserver=socket.socket()server.bind(('......
  • 【django学习-03】URLS(路由系统)
    一:URL配置(URLconf)就像Django所支撑网站的目录。它的本质是URL模式以及要为该URL模式调用的视图函数之间的映射表;你就是以这种方式告诉Django,对于这个URL调用这段代码,对......
  • Web字体简介_TTF_OTF_WOFF_EOT以及SVG
    Web字体简介_TTF_OTF_WOFF_EOT以及SVG字体格式有太多选择,不幸的是始终没有一个能在所有的浏览器上通用。这意味着,你必须使用多种字体的方案来保持用户跨平台的一致性体......
  • 【django学习-03】Django的配置文件(settings)
    Django的配置文件setting.py用于配置整个网站的环境和功能,核心配置必须有项目路径、秘钥配置、域名访问权限、APP列表、中间件、资源文件、模板配置、数据库的链接方式等......
  • python的django写页面上传文件以及遇到的问题
    首先上结构mynode->app5->urls.py&views.py           |->templates->5->upload.html           |->mynode->urls.py   ......
  • Django模板语法
    一、Python的模板:HTML代码+模板语法二、模板语法需掌握以下几个用法传值过滤器标签继承导入模板三、简要介绍1.模板语法之传值{{}}#一般给变量使用相关......
  • 2-1 django-员工管理系统
    1.视频【2-1、3-1、4-1、5-13】https://www.bilibili.com/video/BV1S44y1K7Hd?p=182.笔记1.创建1.1创建项目      1.2创建apppythonmanage.pystar......
  • Node.js安装简介
    一、Node.js简介Node.js是一个开源和跨平台的JavaScript运行时环境。它几乎是任何类型项目的流行工具!Node.js在浏览器之外运行V8JavaScript引擎(GoogleChrome的内核)。这使......