Django在网页中调用python小程序

使用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 %}

#蓝色字体为表单代码,此处的method为post,action为url中定义的/count_sequence/表示调用的是views里的count_seq函数,注意要相互对应。


#注意名称,直接导致向函数传值

需要查询的片段:


{% block content %}

#青色字体为表单提交后显示结果代码,红的字体均为函数render_to_response传回的值

{% if seq_a and seq_c %}

您要统计序列中,{{ seq_c|escape }}的结果为:

序列中拥有需要统计的序列"{{ seq_c|escape }}"总共有{{ seq_count|escape }}条

它们的位置分别为:{{ seq_positions|escape }}

{% endif %}

{% endblock %}

这样,就可以从浏览器输入http://localhost/count_sequence/来运行程序了。

你可能感兴趣的:(python)