ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

django(一)

2019-08-28 17:05:18  阅读:177  来源: 互联网

标签:obj 外键 django Book pub book


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

标签:obj,外键,django,Book,pub,book
来源: https://www.cnblogs.com/albert0823/p/11425070.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有