Django有关的所有命令
1. Django的安装
pip install django ==1.11.11
pip install -i yuan django==1.11.11
2. 创建项目
django-admin startproject 项目名
通过manage.py执行
CD项目目录下
3.创建APP
python manage.py startapp app01
4. 启动项目
python manage.py runserver # 127.0.0.1:8000
python manage.py runserver 80 # 127.0.0.1:80
python manage.py runserver 0.0.0.0: 80 # 0.0.0.0:80
5. 数据库相关
python manage.py makemigrations # 记录modeles 的变化,将变更记录到 对应APP 下的 migrations
python manage.py migrate # 翻译成SQL语句,去数据库执行
-------------------------------------------------------------我是下划线-----------------------------------------------------
配置settings.py
1. 数据库相关
EGNIGE: 引擎 mysql sqllite3
NAME: 数据库名字
HOST: IP
POST: 端口号 3306
USER: 用户名
PASSWORD: 密码 ‘ ’
2. 静态文件相关
STATIC_URL= ‘static’ # 别名
STATICFILES_DIRS = [
os.path.join(BASE_DIR,'STATIC'),
]
3. APP
INSTALLED_APPS = [
'app01.apps.App01Config', #告诉 Django我自己新建了一个名叫app01的应用
# ‘app01’
]
4. CSRF
注释掉CSRF中间件 form表单可以提交POST请求
5. TEMPLATES
'DIRS':[os.path.join(BASE_DIR,'TEMPLATES')]
----------------------------------------------------------我是下划线--------------------------------------------------------
ORM的对应关系
类 -------- 数据表
对象 -------- 数据行
属性 -------- 字段
-----------------------------------------------------我是下划线------------------------------------------------------
Django使用mysql数据库的步骤:
1.手动创建mysql数据库
2. 在settings.py中配置:
DATABASES = {
'default':{
'ENGINE': 'django.db.background.mysql', # 连接数据库的类型
'NAME': 'mysite' # 数据库名
'HOST': '127.0.0.1', # 数据库主机地址
'POST': 3306 # 数据库的端口
'USER': 'root',
'PASSWORD': ' ',
}
}
3. 告诉Django使用pymysql连接数据库
在于settings.py 文件同级的目录下的__init__.py写代码:
import pymysql
pymysql.install_as_MySQLdb()
4. 在models.py中写类(继承models.Model)
class Press(models.Model):
id = models.AutoField(primary_key=True) # id主键
name = models.CharField(max_length=32) # 出版社名称
def __str__(self):
return '<这是一个出版社对象,它的名字是:{}>'.format(self.name)
# 书
class Book(models.Model):
id = models.AutoField(primary_key=True) #自增ID主键
title= models.CharField(max_length=30) # 书名
price = models.IntegerField() # 价格
# Django 1.11 默认就是级联删除 , Django2.0 之后必须指定on_delete
# to=关联的表名
press = models.ForeignKey('Press_on_delete=models.CASCADE')
# 作者
class Author(models.Model):
id = models.AutoField(primary_key=True) # 自增ID主键
name = models.CharField(max_length=32) # 作者名字
books = models.ManyToManyField(to='book') # 只是ORM层面建立的一个多对多关系,不是作者表的一个字段
def __str__(self):
return self.name
5. 执行命名
python manage.py makemigrations # 记录models的变化,将变更记录到 对应APP下的migrations
python manage.py migrate # 翻译成SQL语句,去数据库执行
-----------------------------------------------------我是下划线--------------------------------------------------------
ORM操作
1. 查:
from app01.models import User,Press,Book,Author
Press.objects.all() # 查询所有出版社对象 ------ 对象列表 queryset
Press.objects.filter(条件) # 查询所有满足条件的出版社对象 ------ 对象列表 queryset
Press.objects.get(条件) # 查询有且只能有一个对象 没有或者多个都报错 ---- 对象
属性:
press_obj.id
press_obj.name
外键:
book_obj.id
book_obj.title
book_obj.press -------关联的对象
book_obj.press_id -------数据库中的关联对象的ID
book_obj.press.id
多对多:
author——obj.books ------管理对象
author_obj.books.all() ------作者关联的所有书籍对象
2. 增加:
new_obj = Press.objects.create(name='新的出版社')
Book.objects.create(title='书名',price = 15,press=press_obj)
Book.objects.create(title='书名',price=15,press_id=press_obj.id)
new_obj = Author.objects.create(name='作者名')
new_obj.books.set([1,2,3])
new_obj.books.set([book1,book2])
new_obj.books.add(1,2,3)
3. 删除
book_obj.delete() ------删除单个对象
Press.objects,filter(条件).delete() -------删多个对象
4. 编辑
press_obj.name = '新的出版社名字'
press_obj.save()
book_obj.press = press_obj
# book_obj.press_id = press_obj.id
book_obj.save()
author_obj.name = '作者名'
author_obj.save()
author_obj.books.set([1,2,3])
Django有关的所有命令的更多相关文章
- Django 之 流程和命令行工具
一.一个简单的web框架 框架,即framework,特指为解决一个开放性问题而设计的具有一定约束性的支撑结构,使用框架可以帮你快速开发特定的系统,简单地说,就是你用别人搭建好的舞台来做表演. 对于所 ...
- python后台架构Django教程——manage.py命令
一.manage.py命令选项 manage.py是每个Django项目中自动生成的一个用于管理项目的脚本文件,需要通过python命令执行.manage.py接受的是Django提供的内置命令. 内 ...
- Django中的syncdb命令
从官方文档的意思来看,现在他已经成为migrate命令的同义词了,和migrate命令有相同的作用. Deprecated since version 1.7: This command has be ...
- Django扩展自定义manage命令
使用django开发,对python manage.py ***命令模式肯定不会陌生.比较常用的有runserver,migrate... 本文讲述如何自定义扩展manage命令. 1.源码分析 ma ...
- django的流程和命令行工具
django实现流程django #安装: pip3 install django 添加环境变量 #1 创建project django-admin startproject mysite ---my ...
- Django(三)runserver 命令源码分析
应用环境 windows7 pycharm2018 profession python3.6 django2.0 我们在pycharm 启动django项目时,常常有这么一个命令操作: python ...
- 关于windows 7 安装Django和基本使用命令
一.安装 在安装前需注意Django 1.6以前的版本不支持python 3.×以上的版本. Django 2.×支持python 3.6 安装方法:打开cmd->输入pip install - ...
- Django 2.x 常用命令
从Pycharm换成VsCode,好多命令都不会,这里记一下. 创建 Django 项目 先进入到你想要创建 project 目录下,执行命令 django-admin startproject pr ...
- django实现自定义manage命令的扩展
在Django开发过程中我们都用过django-admin.py和manage.py命令. django-admin.py是一个命令行工具,可以执行一些管理任务,比如创建Django项目.而manag ...
- 【AMAD】django-extensions -- Django框架的自定义命令扩展集合
动机 简介 个人评分 动机 使用Django进行开发的时候,会不会感觉开发工具少了一些.比如每次进入python shell调试的时候要重新import每个model. 简介 django-exten ...
随机推荐
- Python代码注释应该怎么写?
https://zhuanlan.zhihu.com/p/22663276?refer=passer http://zh-google-styleguide.readthedocs.io/en/lat ...
- PowerBuilder编程新思维2:嵌入(Thread多线程)
PowerBuilder编程新思维2:嵌入(Thread多线程) 在PB中使用多线程,在网上有大量的文章介绍.不过深入研究并试着给出更易用的模型的,目前还只有"路人甲cw"的一篇& ...
- Redis发布订阅机制
1. 什么是Redis Redis是一个开源的内存数据库,它以键值对的形式存储数据.由于数据存储在内存中,因此Redis的速度很快,但是每次重启Redis服务时,其中的数据也会丢失,因此,Redis也 ...
- 反射实现Model修改前后的内容对比
在开发过程中,我们会遇到这样一个问题,编辑了一个对象之后,我们想要把这个对象修改了哪些内容保存下来,以便将来查看和追责. 首先我们要创建一个User类 public class User { priv ...
- 在Android开发中替换资源图片不起作用的解决方法
现象 在android开发中,经常会需要替换res\drawable中的图片,打开res\layout下的文件预览布局页面发现图片已经被替换,但在模拟器或者真实机器上运行时发现该图片并没有被替换,还是 ...
- Tomcat服务器的安装配置图文教程(推荐)
现在将使用Tomcat的一些经验和心得写到这里,作为记录和备忘.如果有朋友看到,也请不吝赐教. 1.首先是Tomcat的获取和安装. 获取当然得上Apache的官方网站下载,开源免费,而且带宽也足够. ...
- 【ibatis】IBatis的SQL批量操作
1.Ibatis批量添加(传入class的list即可) <insert id="Add" resultMap="Select" parameterCla ...
- 撩课-Web大前端每天5道面试题-Day36
1.介绍一下你对浏览器内核的理解? 主要分成两部分:渲染引擎(layout engineer或Rendering Engine)和JS引擎. 渲染引擎:负责取得网页的内容(HTML.XML.图像等等) ...
- Humble Numbers(hdu1058)
Humble Numbers Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) T ...
- PHP DDos的几个防御方法详解
这类攻击有一个最大的特性,就是上传流量霎时增大,通常流量高达数十以至近百M,将整台效 劳器,以至将整台机柜的宽带堵住,使网站无法运转,而这样的攻击,我们无法从远程处理,一但那个phpshell运转,你 ...