zoukankan      html  css  js  c++  java
  • Django01

    Django模块使用方法: 1.先下载Django模块: 1.在设置里面下载: file-->settings-->project-->project interpreter-->搜索Django ps:勾选specify version 选项选择需要安装的Django版本(本着不安装最新版本的原则选择1.11.11,最新版为3.1) 2.命令行下载 pip3 install django==1.11.11 验证是否安装成功使用命令: Django-admin 2.创建Django项目: 1.命令行: Django-admin startproject 项目名称 完成后刷新后出现: init.py settings.py 用户可以进行配置的配置文件 urls.py wsgi.py manage.py 2. 可直接使用pycharm创建Django项目 ps:使用命令行创建项目是不会自动穿件templates文件夹,也就意味这我们需要手动在配置文件中将这个路径 添加上,使用pycharm则不需要 templates文件里面都是html文件

    3.创建app
    命令行:
    第一种
    django-admin startapp app名字
    第二种
    python3 manag.py startapp app名字
    app文件:
    migrations文件夹 数据库的操作记录
    __init__.py
    apps.py 注册APP相关文件
    admin.py Django后台管理相关
    models.py orm模块相关的py文件
    views.py 视图函数相关的py文件
    tests.py 调试相关的py文件

    ps:创建新的app一定是需要在settings中的INSTALLED_APPS方法注册
    注册有两种写法:
    1.‘app01’(app名称)
    2."app01.apps.AppConfig"(app01是app名称)

      app的概念:
              Django的项目就当做一片土地,app就是在土地上面所建立的大楼,每个大楼之间都有自己的独有功能

    4.启动Django项目:

    python3 manage.py runserver django的默认端口号为8000
    5.Django必须掌握的三个方法也就是三个单词:
      HttpRespomse       返回字符串
      render               返回的是html页面
      redirect             返回的是重定向
       
    6.静态文件:
      1.首先我们需要明白的是,html文件默认都在templates文件夹下面
      2.静态文件:对于已经写好的文件我们不需要自己写的文件,也就是拿来即用的那些文件,我们称之为“静态文件”
          类似于:
              bootstrap 之类的前端框架,这些是已经写好的
              图片
              js
              css
          静态文件我们会默认创建一个名为static的文件夹
              ststic文件夹中我们会默认创建的子文夹:
                  css文件夹
                  js文件夹
                  img文件夹
                  其他(前端的框架代码,第三方的插件等等)
      `3.静态文件的配置:
          STATICFILES_DIRS = [
                  os.path.join(BASE_DIR,'static')
          ]
         
      `4.访问静态文件中的资源:
              STATIC_URL = '/static/'             这个时候这个static就不是文件夹的名字而是接口的前缀,也就是说只要想访问静态文件里面的资源就必须加这个前缀
        因为用户可以访问到的资源都是在url中,只有url中设定相关的资源用户才能访问到,所以说,用户能接收到什么样的资源都是需要设置的
         
          动态解析静态文件接口(利用解析器 动态获取接口前缀):
              {%load static%}
              <link rel="styesheet" href="% static 'bootstrap-3.3.7-dist/css/bootstrap.min.css' %">

     

     7.form表单提交数据的目的地,也就是递交数据的地址:
          1.form递交数据的地址action来控制
          2.三种填写情况:
              1:不写的情况--->默认向本地地址提交
              2.只写后缀/index/----> 像本项目的页面所在地址添加
              3.还可以写全路径
    8.视图函数一般会首先处理get请求:
        实例:
              def login(request):
                  if request.method == "POST": # 使用request点方法获取是提交还是获取
                      return HttpRespomse("低价奥特毛") # 如果时递交可以做其他的响应操作
                  return render(request,'login.html') # 如果是获取返货客户需要的页面和数据。

     

      9. 获取前端数据:
          1.request.method获取请求的方法
          2.数据的处理:
              ps:对数据的处理不光有wsgiref模块,我们的Django后端也进行了数据的处理
               
              1.GET方法:
                      request.GET方法:可以获取前端get提交到后端的数据(获取到的数据类似一个大字典)
                      request.GET.get(‘键’)虽然value是一个列表 但是默认只取列表最后一个元素
                      request.GET.getlist('hobby') 可以吧列表的数据全部取出
                2.post
                      request.POST获取前端提交的post数据(也类似一个大字典)
                      取值:
                            request.POST.get(‘键’)虽然value是一个列表 但是默认只取列表最后一个元素
                            request.POST.getlist('hobby') 可以吧列表的数据全部取出
                      不过不建议使用括号的方式获取数据,因为如果没有数据会报错的
    10.Django默认使用的数据库是自带的sqlite数据库,如果要跟换数据库需要在srttings配置文件中配置:
      1.在settings文件中配置
              DATABASES = {
                  default:{
                  'EHGINE':'django.db.backends.mysql',
                  'NAME': 'day51',
                  'HOST':'127.0.0.1',
                  'PORT':3306,
                  'USER':'root',
                  'PASSWORD':'123',
                  'CHARSET':'utf8'  
              }
              }

        2. 还要在项目名下的init文件或者是应用名下在init文件中设置不让Django使用默认的数据库,而是使用pymysql
          import pymysql
          pymysql.install_as_MySQL()
      11.Django里面的对象关系映射:
          ORM:
              表--------------->类
              一条条的记录--------------->对象
              字段对应--------------->对象的属性

        1.首先我们需要在models.py中书写模型类
              class User(models.Model):
                  username = models.CharField(max_length=32)
                  password = models.IntegerField()
          ps:
                注意:只要动了models中跟数据库相关的代码 就必须重新执行上面的两条命令 缺一不可(******)
                  python3 manage.py makemigrations # 仅仅是在小本本上(migrations文件夹)记录数据库的修改 并不会直接操作数据
                  python3 manage.py migrate # 将数据库修改记录 真正同步到数据库
                   
      12.表字段的增删改查:
         
          增:
              当一张表已经创建出来之后 后续还想添加字段,可以有两种方式
    1.给新增的字段设置默认值
    addr = models.CharField(max_length=32,default='China') # default该字段默认值

    2.给新增的字段设置成可以为空
      age = models.IntegerField(null=True) # 该字段允许为空
          删:
              删除字段 直接在models.py中注释该字段 然后重新执行两条命令即可
              注意:执行完之后 表中该字段所对应的所有的数据全部删除
              并且一般情况下,基本是不会用到真正意义上的删除

     

        13. orm操作需要使用models中的类名字:
          首先我们需要在models:
              from app01(app名字) import models
          查:
              models.USER.objects.all()   # 获取所有数据
              同等于:select * from USER
              models.USER.objects.get(条件) 同等于 select *from user where id=1
              get方法可以直接拿到数据对象本身,如果数据不存在的时候,会直接报错,所以这个不推荐使用
               
              推荐使用:filter过滤的意思:
                  models.USER.objects.filter(条件 ) 条件可以放多个,关系为and
                        filter拿到是一个列表   filter操作其实都是批量操作
                      如果filter结果列表中有多个数据 那么会一次性全部修改
                      类似于for循环一个个修改
                      方查询条件不存在的时候返回空也就是none
                  models.USER.objects.filter(条件 ).query     可以拿到他的sql语句,只有queryset对象的时候才可以使用
                    ***filter拿到的结果就是一个querySet对象(你现在只需要知道filter拿到的结果就能够点query查看sql语句)
                          querySet对象 你可以吧它当做列表操作 取值也可以通过索引取(querySet只支持正数索引 不支持负数) 还支持切片操作(切出来的结果还是一个querySet对象)
                          但是不推荐这么做
              user_obj = models.User.objects.filter(username=username).first() # 拿列表中第一个数据对象  
            增:
               
                  1.create方法:
                      models.User.objects.create(username=username,password=password)
                      create方法能够新增数据 并且有一个返回值,返回值就是新增的数据对象本身
     
                  2. 利用对象:
                      user_obj = models.User(username=username,password=password)
                      user_obj.save()
                 
            删:
                models.User.objects.filter(id=delete_id).delete() 同等于 delete from user where id = delete_id;

     

             改:
                1:
                models.User.objects.filter(id=edit_id).update(username=username,password=password)
                update user set username = username,password = password where id = edit_id  
                2:(不推荐使用:)
                  edit_obj.username = username
                  edit_obj.password = password
                  edit_obj.save()
                  不推荐使用的原因:第二种方式会从头到尾将所有的字段全部修改一遍 效率极低

     

             前后端用户的增删改查:
              1.通过orm展示所有的到前端
                  all()
                  模板语法for循环
              2.添加新增按钮 (用户的新增操作)
                  a标签的href直接触发后端逻辑
                  create()
              3.添加编辑 删除按钮
                  编辑
                  删除
                      利用get请求携带参数的特点 在url的后面跟上对应数据的id值
                      request.GET.get()
                       
                      如果是编辑
                          重新渲染一个页面 将编辑对象传递到前端
                       
                      如果是删除
                          直接利用filter(...).delete()

     

     

     

     

     

     

     

     

     

     

  • 相关阅读:
    各国语言缩写列表,各国语言缩写-各国语言简称,世界各国域名缩写
    How to see log files in MySQL?
    git 设置和取消代理
    使用本地下载和管理的免费 Windows 10 虚拟机测试 IE11 和旧版 Microsoft Edge
    在Microsoft SQL SERVER Management Studio下如何完整输出NVARCHAR(MAX)字段或变量的内容
    windows 10 x64系统下在vmware workstation pro 15安装macOS 10.15 Catelina, 并设置分辨率为3840x2160
    在Windows 10系统下将Git项目签出到磁盘分区根目录的方法
    群晖NAS(Synology NAS)环境下安装GitLab, 并在Windows 10环境下使用Git
    使用V-2ray和V-2rayN搭建本地代理服务器供局域网用户连接
    windows 10 专业版安装VMware虚拟机碰到的坑
  • 原文地址:https://www.cnblogs.com/ioipchina/p/11529735.html
Copyright © 2011-2022 走看看