zoukankan      html  css  js  c++  java
  • Django初识

    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()
                                
                        
                        
                        
                        
                        
                        
                        
                        
                        
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
                   
         
    

      

  • 相关阅读:
    linux下给U盘分区&制作文件系统
    迭代器 配接器
    仿函数
    在查询用户的权限的时候 使用左外连接 和 access数据库中左外连接
    C# 想要程序文件移动 而数据保持相对位置
    C# 第三方控件 下面的Item不显示了
    C# 第三方控件 错误 LC-1
    c# 第三方控件 闪退
    access 语句错误
    poj 1469(二分图 最大匹配)
  • 原文地址:https://www.cnblogs.com/ioipchina/p/11529727.html
Copyright © 2011-2022 走看看