在线编辑代码[django]版本
再国内,做什么都这么吃力。连aliyun 的ssh 都被封这是什么世道,所以做一个在线编辑代码的
忙忙碌碌有点粗糙。大家见谅
1. [代码]views.py
#-*- coding:utf-8 -*-
# jQuery File Tree
# Python/Django connector script
# By Martin Skou
#
import os
import urllib
from django.http import HttpResponse
from django.shortcuts import render_to_response
from django.shortcuts import render
from django.views.decorators.csrf import csrf_exempt
def index(request):
if not request.user.is_superuser:
return HttpResponse(u"不要乱来")
return render(request, 'codemirror/index.html', {"foo": "bar"},
content_type="text/html")
def openfile(request):
if not request.user.is_superuser:
return HttpResponse(u"不要乱来")
path = request.GET['path']
f = open(path)
con = f.read()
f.close()
return render(request, 'codemirror/openfile.html', {"con": con, "path":path},
content_type="text/html")
@csrf_exempt
def savefile(request):
if not request.user.is_superuser:
return HttpResponse(u"不要乱来")
path = request.POST['path']
con = request.POST['con']
f = open(path, 'wr')
f.write(con.encode('utf-8'))
f.close()
return HttpResponse('成功')
@csrf_exempt
def createfile(request):
if not request.user.is_superuser:
return HttpResponse(u"不要乱来")
path = request.GET['path']
f = open(path, 'wr')
f.write('')
f.close()
return HttpResponse('成功')
@csrf_exempt
def dirlist(request):
if not request.user.is_superuser:
return HttpResponse(u"不要乱来")
r=['<ul class="jqueryFileTree" >']
try:
r=['<ul class="jqueryFileTree" >']
d=urllib.unquote(request.POST.get('dir','c:\\temp'))
for f in os.listdir(d):
ff=os.path.join(d,f)
if os.path.isdir(ff):
r.append('<li class="directory collapsed"><a href="#" rel="%s/">%s</a></li>' % (ff,f))
else:
e=os.path.splitext(f)[1][1:] # get .ext and remove dot
r.append('<li class="file ext_%s"><a href="#" rel="%s">%s</a></li>' % (e,ff,f))
r.append('</ul>')
except Exception,e:
r.append('Could not load directory: %s' % str(e))
r.append('</ul>')
return HttpResponse(''.join(r))
2. [代码]urls.py
#-*- coding:utf-8 -*-
from django.conf.urls.defaults import patterns, url
urlpatterns = patterns('codemirror.views',
url(r'^dirlist.html$', 'dirlist'),
url(r'^index.html$', 'index'),
url(r'^openfile.html$', 'openfile'),
url(r'^savefile.html$', 'savefile'),
url(r'^createfile.html$', 'createfile'),
)
3. [代码]index.html
<html>
<head>
<script type="text/javascript" src="/static/js/jquery-1.9.0.min.js"></script>
<link href="/static/codemirror-3.16/lib/codemirror.css" rel="stylesheet">
<script type="text/javascript" src="/static/codemirror-3.16/lib/codemirror.js"></script>
<script type="text/javascript" src="/static/jqueryFileTree/jqueryFileTree.js"></script>
<link href="/static/jqueryFileTree/jqueryFileTree.css" rel="stylesheet">
</head>
<body>
<h1>
<p>My first paragraph.</p>
<div id="file_tree_div_id" >
</div>
<iframe id="editor_iframe_id" src="" ></iframe>
<script type="text/javascript">
$(document).ready( function() {漫画图片
/* $.get('/codemirror/dirlist.html?dir=/home/boneyao/', function(html){
$('#file_tree_div_id').html(html);
});*/http://www.bizhizu.cn/manhua/
$(document).ready( function() {
$('#file_tree_div_id').fileTree({
root: '/home/boneyao/',
script: '/codemirror/dirlist.html?dir=/home/boneyao/',
expandSpeed: 1000,
collapseSpeed: 1000,
multiFolder: false
}, function(file) {
$('#editor_iframe_id').attr('src', "http://www.boneyao.com/codemirror/openfile.html?path="+file);
});
});
});
/*
var editor = CodeMirror.fromTextArea(myTextarea, {
mode: "text/html"
});*/
</script>
</body>
</html>
4. [代码]openfile.html
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript" src="/static/js/jquery-1.9.0.min.js"></script>
<link href="/static/codemirror-3.16/lib/codemirror.css" rel="stylesheet">
<script type="text/javascript" src="/static/codemirror-3.16/lib/codemirror.js"></script>
<script type="text/javascript" src="/static/codemirror-3.16/mode/python/python.js"></script>
<script type="text/javascript" src="/static/codemirror-3.16/mode/javascript/javascript.js"></script>
<script type="text/javascript" src="/static/jqueryFileTree/jqueryFileTree.js"></script>
<link href="/static/jqueryFileTree/jqueryFileTree.css" rel="stylesheet">
</head>
<body>
<input type="button" value="保存" onclick="save()"/></h1>
<TextArea id="myTextarea" >
{{con}}
</TextArea>
<script type="text/javascript">
var mode = "";
switch(window.location.href.split('.').slice(-1)[0]){
case 'py': mode='python';break;
case 'js': mode='javascript';break;
}
var editor = CodeMirror.fromTextArea($('#myTextarea')[0], {
mode: mode
});
editor.setSize('100%','100%');
function save(){
var value = editor.getValue();
$.post('http://www.boneyao.com/codemirror/savefile.html', {
'path':"{{path}}",'con':value
}, function(text){
alert(text);
});
};
</script>
</body>
</html>
5. [图片] 2.bmp

在线编辑代码[django]版本的更多相关文章
- [个人开源]vue-code-view:一个在线编辑、实时预览的代码交互组件
组件简介 vue-code-view是一个基于 vue 2.x.轻量级的代码交互组件,在网页中实时编辑运行代码.预览效果的代码交互组件. 使用此组件, 不论 vue 页面还是 Markdown 文档中 ...
- RunJS - 在线编辑、展示、分享、交流你的 JavaScript 代码
发现一个很好玩,很强大的网站 RunJS - 在线编辑.展示.分享.交流你的 JavaScript 代码 http://runjs.cn/ 比如: http://runjs.cn/detail/l ...
- 花了一年时间完成的 在线G代码编辑,加工系统 G-Code Editor V1.0
G代码是数控程序中的加工指令.一般都称为G指令.可以直接用来驱动机床,各种控制系统.是一种数控行业标准.传统的G代码编写以及编辑无法在线编辑,也不能实时看到g代码编辑的最后加工路径已经不能直接对编辑的 ...
- 一个很好用的在线编辑、展示、分享、交流JavaScript 代码的平台
在发表博客时,有一些代码只能粘贴进去,而不能看到代码运行的效果,需要读者把代码粘贴进自己的编辑器,然后再运行看效果,这是一件很耗时的事情 在平时百度的时候,我发现一些网站可以在线预览功能,而且可以在线 ...
- 在线编辑word文档代码
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...
- java 网站源码 在线编辑模版 代码编辑器 兼容手机平板PC freemaker 静态引擎
前台: 支持四套模版, 可以在后台切换 系统介绍: 1.网站后台采用主流的 SSM 框架 jsp JSTL,网站后台采用freemaker静态化模版引擎生成html 2.因为是生成的html,所以 ...
- Office文档在线编辑的实现之二
讲述了如何通过iis的webdav支持实现客户端的office直接编辑服务器上的文件,本篇将讲解如何实现客户端的office直接编辑数据库中的二进制形式保存的office文件. 实现的关键:模拟IIS ...
- 使用WebDAV实现Office文档在线编辑
Office的文档处理能力是非常强大的,但是它是本地资源,在Office Web App尚未成熟前,仍需要使用本地能力来进行文档编辑,可是现代的系统的主流却是B/S,所以在B/S中调用本地的Offic ...
- C# 10分钟入门基于WebOffice实现在线编辑文档,实时保存到服务器(所有office,兼容WPS)
今天,他来了(weboffice在线编辑文档). 上次写了一个在线预览的博,当然,效果并不是太理想,但是紧急解决了当时的问题. 后来,小编重新查找资料,求助大牛,终于使用新的方式替换了之前的low方法 ...
随机推荐
- IIS 下 部署nodejs 使用反向代理
目标服务器:targetServer 配置反向代理的服务器:reveseProxServer iis应该是iis7及以上版本,才可以. 1.确定最终访问的网址:比如www.baidu.com .ww ...
- 看完这篇还不会 GestureDetector 手势检测,我跪搓衣板!
引言 在 android 开发过程中,我们经常需要对一些手势,如:单击.双击.长按.滑动.缩放等,进行监测.这时也就引出了手势监测的概念,所谓的手势监测,说白了就是对于 GestureDetector ...
- xcode下载低版本模拟器速度缓慢解决方案
随着苹果系统的更新和迭代,现在app开发中需要适配的除了需要适配屏幕尺寸以外,还需要适配系统版本.系统版本测试如果有条件可以使用各种系统版本的真机进行适配,如果没有这个条件,也可以采用xcode的模拟 ...
- 关于myeclipse中启动项目(server为welogic10)报valid license.bea错误的问题解决方式
之前由于重转系统.导致我的weblogic和myeclipse都要重装.重装之后,出现了问题,我是依照weblogic破解版的步骤来的.但还是报例如以下错误: Unable to start WebL ...
- (C#)为应用程式设定运行权限(System.Security类下的GenericIdentity,GenericPrincipal,PrincipalPermission)
最近看书<编写高质量代码改善C#程序的157个建议>,知识点备忘: System.Security.Principal.GenericIdentity==>表示一般用户 System ...
- 自定义一个更好用的SwipeRefreshLayout(弹力拉伸效果详解)(转载)
转自: 自定义一个更好用的SwipeRefreshLayout(弹力拉伸效果详解) 前言 熟悉SwipeRefreshLayout的同学一定知道,SwipeRefreshLayout是android里 ...
- ios uitableview button 获取cell indexpath.row
在iOS7下面已经无效,因为iOS7的层级关系发生变化 UITableViewCell->UITableViewCellScrollView->UITableViewCellContent ...
- 仿百度壁纸client(五)——实现搜索动画GestureDetector手势识别,动态更新搜索keyword
仿百度壁纸client(五)--实现搜索动画GestureDetector手势识别,动态更新搜索关键字 百度壁纸系列 仿百度壁纸client(一)--主框架搭建,自己定义Tab + ViewPager ...
- vscode 和 atom 全局安装和配置 eslint 像 webstorm 等 ide 一样使用 standard标准 来检查项目
首先你要安装了 nodejs ,然后在终端命令行输入下面的这堆 npm install eslint eslint-plugin-standard eslint-config-standard esl ...
- Win7程序运行出现Windows Based Scrip Host 已停止工作问题的解决方法
最近在使用类似于Teamviewer这样的程序时,突然运行不了,报错:Microsoft Windows Based Scrip Host 已停止工作的问题,从系统日志来看,好像是空指针问题,但是又无 ...