Django | 执行项目下指定的脚本
1 描述
有时候会碰到这样的场景,对于一些业务升级,我需要把数据库数据做些处理,同时又想以 Django 项目的环境变量执行脚本,这个时候使用 python 脚本是再适合不过的手段了。
2 使用自带的 shell
python manage.py shell < script
或者
./manage.py shell < script
2.1 举例
2.2 脚本代码如下:
# -*- coding: utf-8 -*-
from __future__ import absolute_import
from __future__ import unicode_literals
from django.contrib.auth.models import User
def show_user():
user = User.objects.get(username='admin')
print 'I am {0}'.format(user.username)
show_user()
2.3执行命令
python manage.py shell < script1.py
2.4 运行结果如下:
2.4.1 安装了 ipython(这里版本为 4.2.0)
2.4.2 没有安装 ipython
3 使用 django-extensions
手段1:在
app下面建立一个scripts包,然后建立你的脚本手段2:在项目目录下面建立一个
scripts包,然后建立你的脚本
运行脚本命令如下:
python manage.py runscript script_name
或者
./manage.py runscript script_name
3.1 手段1
3.1.1 针对手段1
3.1.2 脚本如下:
# -*- coding: utf-8 -*-
from __future__ import absolute_import
from __future__ import unicode_literals
from django.contrib.auth.models import User
def run():
user = User.objects.get(username='admin')
print 'project_dir/cat/scripts/:I am {0}'.format(user.username)
3.1.3 运行命令
python manage.py runscript showadmin
3.1.4 执行结果如下
3.2 手段2
3.2.1 针对手段 2
3.2.2 脚本如下:
# -*- coding: utf-8 -*-
from __future__ import absolute_import
from __future__ import unicode_literals
from django.contrib.auth.models import User
def run():
user = User.objects.get(username='admin')
print 'project_dir/scripts/:I am {0}'.format(user.username)
3.2.3 运行命令
./manage.py runscript showadmin
3.2.4 执行结果
3.3 注意
runscript 命令会首先检查每个 app 下的 scripts 目录,如果找到对应名字的脚本就会执行.然后检查 project_dir/scripts 目录下是否包含符合名字的脚本,如果找到也会执行.也就是说,我们可以在不同的 app 中创建相同名字的脚本,并且都会被执行.
此时有两个 showadmin.py 文件
djtest/cat/scripts/showadmin.py
djtest/scripts/showadmin.py
运行结果如下:
4 使用自定义命令
这个自行参照文档
5 使用 migrations
示例如下:
from django.db import migrations
from apps.xx.scripts.xx import run
class Migration(migrations.Migration):
initial = True
dependencies = [
('thirdservice', '0007_auto_20160909_1021'),
]
operations = [
migrations.RunPython(run),
]
在 run 方法中封装业务逻辑,这样更为方便一些
Django | 执行项目下指定的脚本的更多相关文章
- linux下使用shell脚本自动化部署项目
在Java开发项目时经常要把正在开发的项目发布到测试服务器中去测试,一般的话是要把项目先打成war包,然后把war包发布到服务器中,关闭服务器, 最后重新启动服务器,虽然这过程不是很繁琐,但如果是多个 ...
- 简单的django登录项目---带views视图函数(脚本文件)---用Bootstrap
简单的django登录项目 1.首先建立工程,建立工程请参照:https://www.cnblogs.com/effortsing/p/10394511.html 2.在Firstdjango工程项目 ...
- Django在Win7下安装与创建项目hello word示例
Django在Win7下的安装及创建项目hello word的例子 有关python 的django 框架安装与开发的小例子.Django在Win7下的安装及创建项目hello word.1.安装:命 ...
- MySQL命令行下执行sql文件(sql脚本)
在mysql命令行下执行sql文件(sql脚本) mysql> source sql文件完整路径 如: mysql> source D:\\MySQL\\create.sql 文 ...
- 浏览器环境下JavaScript脚本加载与执行探析之动态脚本与Ajax脚本注入
在<浏览器环境下JavaScript脚本加载与执行探析之defer与async特性>中,我们研究了延迟脚本(defer)和异步脚本(async)的执行时机.浏览器支持情况.浏览器bug以及 ...
- 执行Android项目时指定特定的AVD进行測试
一个Androidproject空间能够创建一个或多个AVD来对指定的Android项目进行測试,假设仅仅创建了一个AVD则执行Android项目时自然启动该AVD,但是假设创建了多个AVD那么我们该 ...
- 通过getResourceAsStream方法获取项目下的指定资源
properties配置文件调用 通过getResourceAsStream方法获取项目下的指定资源 一:获取src下的指定资源 1). Class.getResourceAsStream(Strin ...
- Django 创建项目笔记
基本命令 mkdir mysite # 创建项目目录,常取名mysite cd mysite virtualenv env # env\Scripts\activate.bat # Win pip i ...
- Django 部署(Apache下)
前言: 因为需要在服务器下运行python脚本,所以需要搭建Django服务器.所以将自己的学习过程也记录下来,方便日后查阅. 本文环境如下: Ubuntu 16.04 python2.7 Apac ...
随机推荐
- spring中的异步事件
这里讲解一下Spring对异步事件机制的支持,实现方式有两种: 1.全局异步 即只要是触发事件都是以异步执行,具体配置(spring-config-register.xml)如下: Java代码 ...
- android开发系列之数据存储
在我们的android实际开发过程,必不可少的一种行为操作对象就是数据.有些数据,对于用户而言是一次性的,这就要求我们每次进到App的时候,都需要去刷新数据.有些数据,对于用户而言又是具有一定时效性的 ...
- ZooKeeper 系列(一)—— ZooKeeper核心概念详解
一.Zookeeper简介 二.Zookeeper设计目标 三.核心概念 3.1 集群角色 3.2 会话 3.3 数据节点 3.4 节点 ...
- win7查看端口占用
1.查看谁占用了我们的80端口,在windows命令行窗口下执行: netstat -aon|findstr 80 发现80端口被进程号为2596的进程占用.2.查看占用80端口进程的应用程序是什 ...
- WARN util.NativeCodeLoader: Unable to load native-hadoop l... using builtin-java classes where applicable(附编译脚本)
WARN util.NativeCodeLoader: Unable to load native-hadoop l... using builtin-java classes where appli ...
- linux支持的machine-types
在内核文件中arch/arm/tools/mach-types定义目前内核支持的板卡.芯片等: ##machine_is_xxx CONFIG_xxxx MACH_TYPE_xxx number ...
- 华为P20无敌拍摄能力开放 如何即刻获得?
在全球专业相机测评机构DXOmark发布的相机评测排行中,华为P20.P20 Pro成功登顶“全球拍照最好智能手机”.P20 Pro综合得分高达109分,P20综合得分102分.“华为并非简单地将第三 ...
- 字符串查找strpos()函数用法
#如果id=3 在字符串中查找出3是否存在.$str="2,12,33,22,55"; if(strpos(','.$id.',',','.$str.',')!==FALSE){ ...
- Linux NAT网络连接权威指南
[1]准备工作,写在前面 1.1)检查服务(cmd>>services.msc,我用的是VM) 1.2)确保Vmnet8 连接处于启动状态 + 获取ipv4(ipv6)地址 (在网络连接不 ...
- Objective-C中NSString转NSNumber的方法
本文转载至 http://www.linuxidc.com/Linux/2013-02/78866.htm 在Objective-C中,以数字格式组成的字符串经常需要转换为NSNumber对象后再使用 ...