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

上一篇:linux下使用hiredis异步API实现sub/pub消息订阅和发布的功能


下一篇:mark ssh免密登录和传输