Django实例--英文、数字与中文之间增加空格
来源:互联网 发布:lua编程软件 编辑:程序博客网 时间:2024/05/22 15:29
需求:
有一段文本,为了显示美观,需要在中文与英文之间,中文与数字之间,前后加上空格。
例如:2015年6月19日 转换后:2015 年 6 月 19 日
前提:
1、Python2.7环境
2、系统:Ubuntu14
3、数据库:Mysql
一、搭建Django环境
sudo apt-get install python-Django
二、创建一个文件夹,用于存放项目
sudo mkdir djangoproject
三、在数据库中创建一个库,设置默认编码格式为utf8
mysql -u root -p
create database southgirl default character set utf8 collate utf8_general_ci;
四、创建一个Django项目
1、进入步骤二创建的文件夹中
cd djangoproject
2、执行下面命令,创建项目,名称为southgirl
django-admin startproject southgirl
五、创建一个Django应用
1、进入步骤四最后创建的项目目录
cd ~/djangoproject/southgirl
2、此时下面还有一个名为southgirl的文件夹,进入到里面
cd southgirl
3、执行下面命令,创建应用,名为addspace
django-admin startapp addspace
六、设置
1、进入步骤四中的项目目录下的southgirl文件夹
cd ~/djangoproject/southgirl/southgirl
2、编辑settings.py,修改下面列出的项目。(需要在manage.py的同级目录下创建static和templates文件夹,在static文件夹下创建css、js、images、upload文件夹)
INSTALLED_APPS = ( 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'southgirl.addspace', ) DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'southgirl', 'HOST':'localhost', 'USER':'root', 'PASSWORD':'123456', } } LANGUAGE_CODE = 'zh-cn' TIME_ZONE = 'Asia/Shanghai' STATIC_URL = '/static/' STATIC_ROOT = os.path.join(os.path.join(BASE_DIR),'static') STATICFILES_DIRS = ( ('css',os.path.join(STATIC_ROOT,'css').replace('\\','/') ), ('js',os.path.join(STATIC_ROOT,'js').replace('\\','/') ), ('images',os.path.join(STATIC_ROOT,'images').replace('\\','/') ), ('upload',os.path.join(STATIC_ROOT,'upload').replace('\\','/') ), ) TEMPLATE_DIRS = [os.path.join(BASE_DIR,'templates')]
七、同步数据库
1、进入到manage.py目录
cd ~/djangoproject/southgirl/
2、执行同步数据库命令
python manage.py syncdb
3、确保无报错,查看mysql数据库,数据库southgirl是否已经生成下面的表
4、启动服务器
python manage.py runserver 0.0.0.0:8001
5、浏览器访问http://localhost:8001/admin,显示下面页面,表示成功
八、开始实现需求
1、在应用目录下创建一个addspace.py文件
cd ~/djangoproject/southgirl/southgirl/addspace
2、sudo vim addspace.py
#-*-coding:utf8-*-from django.http import HttpResponse,HttpResponseRedirectfrom django.shortcuts import render_to_response,redirect,RequestContextfrom django.views.decorators.csrf import csrf_exemptdef addspace(request): return render_to_response("addspace.html")def is_chinese(uchar): # 判断一个unicode是否是汉字 if uchar>= u'\u4e00' and uchar<=u'\u9fa5': return True else: return Falsedef is_number(uchar): # 判断一个unicode是否是数字 if uchar >= u'\u0030' and uchar<=u'\u0039': return True else: return Falsedef is_english(uchar): # 判断一个unicode是否是英文字母 if (uchar >= u'\u0041' and uchar<=u'\u005a') or (uchar >= u'\u0061' and uchar<=u'\u007a'): return True else: return Falsedef is_erightbracket(uchar): # 判断一个unicode是否是英文右括号 if uchar==u')': return True else: return Falsedef is_crightbracket(uchar): # 判断一个unicode是否是中文右括号 if uchar==u'\uff09': return True else: return Falsedef checkText(teststring): newstring = "" testlist = list(teststring) for i in range(0,len(testlist)): if i<len(testlist)-1: if (is_chinese(testlist[i]) and is_number(testlist[i+1])) or (is_chinese(testlist[i]) and is_english(testlist[i+1])): testlist[i] = testlist[i]+" " elif (is_number(teststring[i]) and is_chinese(teststring[i+1])): testlist[i] = testlist[i]+" " elif (is_english(teststring[i]) and is_chinese(teststring[i+1])): testlist[i] = testlist[i]+" " elif (is_erightbracket(teststring[i]) and is_chinese(teststring[i+1])): testlist[i] = testlist[i]+" " elif (is_crightbracket(teststring[i]) and is_number(teststring[i+1])) or (is_crightbracket(teststring[i]) and is_english(teststring[i+1])): testlist[i] = testlist[i]+" " newstring = newstring+testlist[i] return newstring@csrf_exemptdef convert(request): testText = request.POST.get('teststring') newstring = checkText(testText) return HttpResponse(newstring)@csrf_exemptdef add(request): needadd = 0 astring = request.POST.get('astring') nextstring = request.POST.get('nextstring') if (is_chinese(astring) and is_number(nextstring)) or (is_chinese(astring) and is_english(nextstring)): needadd = 1 elif (is_number(astring) and is_chinese(nextstring)): needadd = 1 elif (is_english(astring) and is_chinese(nextstring)): needadd = 1 elif (is_erightbracket(astring) and is_chinese(nextstring)): needadd = 1 elif (is_crightbracket(astring) and is_english(nextstring)) or (is_crightbracket(astring) and is_number(nextstring)): needadd = 1 return HttpResponse(needadd)
3、template文件夹下创建两个html文件,base.html用于存放公共信息,addspace.html定义添加空格页面信息
base.html
<!DOCTYPE html><html lang="zh"><head> <title>{% block title %}{% endblock %}</title> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <link href="http://libs.baidu.com/bootstrap/3.0.3/css/bootstrap.min.css" rel="stylesheet"> <script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script> <script src="http://libs.baidu.com/bootstrap/3.0.3/js/bootstrap.min.js"></script> {% block extrastyle %}{% endblock %}</head><body>{% block content %}{% endblock %}</body>
addspace.html
{% extends "base.html" %}{% block title %}添加空格{% endblock %}{% block extrastyle %} <script type="text/javascript"> $(document).ready(function(){ $("#testdata").click(function(){ $("#outText").empty(); teststring = $("#testText").val(); stringarray = []; stringarray = teststring.split(''); for(var i=0;i<stringarray.length;i++) { if (i<stringarray.length-1) { $.ajax({ type: "POST", cache: false, data: {astring:stringarray[i],nextstring:stringarray[i+1]}, async: false, url: "/addspace/add/", success: function(data) { if(data==1) { $("#outText").append(stringarray[i]); $("#outText").append('<label style="color:red;">_</label>'); } else { $("#outText").append(stringarray[i]); } }, error: function(data) { alert(data); } }); } else { $("#outText").append(stringarray[i]); } } }); $("#convertdata").click(function(){ $("#outText").empty(); teststring = $("#testText").val(); $.ajax({ type: "POST", cache: false, data: {teststring:teststring}, async: false, url: "/addspace/convert/", success: function(data) { $("#outText").append(data); }, error: function(data) { alert(data); } }); }); }); </script>{% endblock %}{% block content %}<form role="form" style="padding:10px;" > <div class="form-group"> <label for="name">测试文本</label> <textarea class="form-control" rows="15" id="testText"></textarea> </div> <button type="button" class="btn btn-success" style="width:100px;margin:20px;" id="testdata">测试</button> <button type="button" class="btn btn-success" style="width:100px;margin:20px;" id="convertdata">输出</button></form><div><label for="name" style="padding:10px;">下划线表示需要加空格</label></div><label for="name" style="padding:10px;">输出文本</label><div id="outText" style="padding:10px;"></div>{% endblock %}
4、修改项目目录下的urls.py文件
cd ~/djangoproject/southgirl/southgirl/
sudo vim urls.py
from django.conf.urls import patterns, include, urlfrom django.contrib import adminadmin.autodiscover()urlpatterns = patterns('', # Examples: # url(r'^$', 'southgirl.views.home', name='home'), # url(r'^blog/', include('blog.urls')), url(r'^addspace/',include('southgirl.addspace.urls')), url(r'^admin/', include(admin.site.urls)),)
5、修改应用目录下的urls.py文件,没有就新增
from django.conf.urls import patterns, include, urlfrom southgirl.addspace import addspaceurlpatterns = patterns('', url(r'^$',addspace.addspace,name='addspace'), url(r'^addspace/',addspace.addspace,name='addspace'), url(r'^add/',addspace.add,name='add'), url(r'^convert/',addspace.convert,name='convert'),)
页面展示:
- Django实例--英文、数字与中文之间增加空格
- JS 控制文本框只能输入中文/中文、英文、数字、空格/中文、英文、数字、小数点
- 计算中文、英文、数字、空格的字符像素宽度
- 中文,英文,数字,下划线
- 提取数字,英文,中文
- 判断中文、英文、数字
- [转]数字及英文字之间如果没有空格,不换行问题
- 人民币,大写中文与数字之间转换
- InterceptString()为什么不能区分中文与英文数字?
- 正则表达式在字母与数字之间增加符号
- 去数字之间的空格
- JS 数字 、中文、 英文、判断
- php 判断中文,英文,数字
- JS 数字 、中文、 英文、判断
- JS ,中文,英文,数字判断
- JS 数字 、中文、 英文、判断
- OpenGL 输出中文 英文 数字
- JS 数字 、中文、 英文、判断
- Window平台OpenGL渲染环境之使用GLUT搭建
- Ajax跨域请求webservice
- Android 软件开发之如何使用Eclipse Debug调试程序详解
- POJ 3414 Pots(BFS+回溯)
- hdoj2091空心三角形
- Django实例--英文、数字与中文之间增加空格
- opencv各类滤波器详解
- 【Unity3D游戏开发】之定制Debug.log输出 (八)
- ngx_cycle_s
- 变量声明和定义的关系
- JDK/JRE/SERVER/CLIENT/JAVA/JAVAC/JAVAW等等
- 如何在网上办理电信宽带
- hive数据操作
- 多个AsynceTask无法同时运行的现象分析