使用django或python的一些web程序的好处就是,可以直接将python中的程序稍作修改直接运用于web页面中,先如何将python的一些小程序运用于web中作一个笔记。
程序实现的功能:查找一个大序列中某个序列出现的个数及出现位置,程序有两个文本框表单,一个大文本框输入需要进行查找的序列,小文本框输入查询的序列KEY。一个提交按钮,提交之后显示结果。
1,首先,我们需要定义url,因为django对浏览器中的url都是有定义要求的,如图。
我在url列表中添加了
(r’^count_sequence/$’,'sites.lab.views.count_seq’),
表示当你在浏览器中输入http://localhost/count_sequence/时会触发sites/lab/views.py里的count_seq函数。
2,根据自己需要定义函数。代码如下
def count_seq(request):
#定义函数明
seq_a = request.POST.get(‘seq_a’, ”).upper()
#从浏览器端获取值,这里使用的是POST,表示不在浏览器地址中传值,避免由于值太大而影响功能,同时将序列转换为大写,为了方便统计。
seq_c = request.POST.get(‘seq_c’, ”).upper()
seq_count = 0
#设置初始值
seq_position = 0
#设置初始值
seq_positions = ”
#设置初始值
if seq_a and seq_c:
#如果两个文本框中都有值则执行
seq_count = seq_a.count( seq_c )
#统计序列中key的个数
seq_position = seq_a.find( seq_c )
#统计位置
while seq_position != -1:
#由于find只返回第一个值,所以此循环进行位置的累加
seq_positions += str(seq_position)+’|’
seq_position = seq_a.find( seq_c, seq_position+1 )
#注:这是为了顺利往下累加,如果不加,程序将进入死循环
else:
#如果条件不成立则为空值
seq_a = ”
seq_c = ”
return render_to_response("count_sequence.html",{‘seq_a’:seq_a, ‘seq_c’:seq_c, ‘seq_count’:seq_count, ‘seq_positions’:seq_positions}) #返回的值,其中count_sequence.html为模板文件,后面的一个dictionary分别为返回的键值和此函数中真实的值,即’seq_a’表示模板中调用的名称,而seq_a则为此函数中的值,’seq_a’可以为其他名称,模板中调用正确即可。
3,创建相应的模板文件count_sequence.html,代码如下:
{% block title %}The Sequence{% endblock %}
<DIV ><form action="/count_sequence/" method="post">
#蓝色字体为表单代码,此处的method为post,action为url中定义的/count_sequence/表示调用的是views里的count_seq函数,注意要相互对应。
<textarea rows="8" cols="80" name="seq_a" >{{ seq_a|escape }}</textarea>
<br>
#注意名称,直接导致向函数传值
需要查询的片段:<input type="text" name="seq_c" value="{{ seq_c|escape }}">
<br/>
<input type="submit" value="提交">
</form>
</DIV>
{% block content %}
#青色字体为表单提交后显示结果代码,红的字体均为函数render_to_response传回的值
{% if seq_a and seq_c %}
<h2>您要统计序列中,{{ seq_c|escape }}的结果为:</h2>
序列中拥有需要统计的序列"{{ seq_c|escape }}"总共有{{ seq_count|escape }}条<br>
它们的位置分别为:{{ seq_positions|escape }}
{% endif %}
{% endblock %}
这样,就可以从浏览器输入http://localhost/count_sequence/来运行程序了。