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'),)

页面展示:
这里写图片描述

0 0