• django(一)


    django

    1. django的准备工作

    django的下载

    ​ pip install django==1.11.23 -i 国内源

    django项目的创建

    django-admin startproject 项目名

    django项目的启动

    python manage.py runserver 可以接ip地址

    django app的创建

    python manage.py startapp app名字

    2. 配置

    templates 模板  dirs[os.path.join(BASE_DIR,'templates')]
    DATABASES 数据库  暂时用mysql 相应的配置
    INSTALLED_APPS=[ 'appname.apps.AppnameConfig'] app安装
    STATIC_URL = '/static/' 静态文件别名 
    STATICFILES_DIRS = [
       os.path.join(BASE_DIR,'static') 
        ##之后使用的所有相关前端的文件,都放在static文件里,路径前加上/static/  * 这里的static是 STATIC_URL里面的/static/ 并不是你创建的static文件,即使你创建os.path.join(BASE_DIR,'lala')  你还是要使用/static/开头*
    ]
    

    3. 使用数据库

    1. 创建数据库
    2. __init__.py下 写上
    import pymysql
    pymysql.install_as_MySQLdb()
    替换mysqldb
    
    1. models里面创建类(表)
    2. 执行迁移命令
    python manage.py makemigrations
    创建迁移脚本 , 记录models里面的表的变化
    python manage.py migrate
    执行迁移脚本 同步表
    

    4. 准备完毕

    1. urls下 写路径 , 对应视图函数views.xxx
    2. 创建视图函数xxx , 接收请求对象 , request
    request 的几种方法
    request.GET  获取url路径所携带的参数
    request.POST form表单携带的提交数据
    request.method 请求的方法
    
    1. 写逻辑 (用到数据库数据,使用orm,后面详述)
    2. 响应,返回界面
    HttpResponse ('字符串') 返回简单界面
    render(request,'模板名',context=content)返回模板界面渲染,context是模板所需要的数据
    redirect('/url路径/') 重定向  响应头Location里面:url
        相当于 给了一个新的路径,重新请求
    
    1. 模板
    {{ 变量 }}
    {% 关键字/逻辑/语法固定 %}  例如  url  for if 需要闭合
    {% for i in list%}
    	其中有一个  forloop.counter 计数 
    {% endfor%}
    

    ----------------------------------------------------------------------

    2. ORM 对象关系映射

    (Object Relational Mapping)

    表结构

    类--表

    对象--行

    属性--字段

    1. AutoField(primary_key)  自增 主键
    
    2. CharField(max_lenth = x) 字符串 最大值
    
    3. ForeignKey(类名,on_delete='操作') 
    	描述一种关系 外键约束 一对多 , 写在多的一方
    	类名可以加引号通过反射 	
    	models.CASCADE  级联删除
    	models.SET(x) 设置成x
    
    4.ManyToMany(类名)多对多的关系 , django会自动创建一张表 存放对应关系 , 可以写在两个关系类的任意一方下 (这种写法操作,相当于外键多关联)
    

    ORM操作

    0. 将类导入视图模块views下
    
    	以下以Book,Author,Publisher举例
    	Book----Author  多对一  创建外键字段  ath
    	Book----Publisher  多对多  publisher创建m2m books
    	
    	相应的对象
    	book--Book  
    	pub_obj---Publisher
    

    1 查询

    基础查询 : Book.objects.all()   返回Queryset,对象集合列表 , 		也就是类(表)的所有(行)对象
    		Book.objects.filter(条件) 返回满足条件的所有对象,后面加.first()方法可以取出第一个
    		Book.objects.get(条件) 满足条件的一个对象
    外键查询 :
    			book.ath 返回Author类的外键关联对象 
    			ORM自动生成了一个 ath_id 的字段(外键名_id 的形式)
    
    多对多查询:
    			pub_obj.books  返回的是一个关系管理对象
    			pub_obj.books.all() 返回所有pub_obj关联的book对象
    

    2 新增

    基础创建  book = Book.objects.create(字段=xx) 
    		book = Book(字段=xx)  book.save() 
    多对多 : pub_obj.books.set(list) 对象列表 book对象列表
    

    3 删除

    Book.objects.filter(xx=xx).delete()
    book.delete()
    

    4 修改

    基础修改 : pub_obj.name = xx
    			pub_obj.save()
    
    外键字段修改 : book.ath = author  外键对象
    				book.ath_id = xx   直接赋值外键字段
    
    多对多 : pub_obj.books.set(book_list) 重新设置
    
    

    前端插件 网站 www.jq22.com

  • 相关阅读:
    android 异步加载图片缩略图
    Java小工具===》在目录内查找包含××(字符串)的文件,并显示行号
    android 录像和拍照功能
    基于socket的上传下载(Java)精简版
    android 瀑布流简单例子
    创建上下文菜单及监听
    一个简单的win32截图例子
    把位图保存为文件源代码
    进程间通讯 —— 共享内存
    解决WIN32窗口不响应WM_LBUTTONDBLCLK消息
  • 原文地址:https://www.cnblogs.com/albert0823/p/11425070.html
Copyright © 2020-2023  润新知