1. 程式人生 > >Django在網頁中呼叫python小程式

Django在網頁中呼叫python小程式

使用django或python的一些web程式的好處就是,可以直接將python中的程式稍作修改直接運用於web頁面中,先如何將python的一些小程式運用於web中作一個筆記。

程式實現的功能:查詢一個大序列中某個序列出現的個數及出現位置,程式有兩個文字框表單,一個大文字框輸入需要進行查詢的序列,小文字框輸入查詢的序列KEY。一個提交按鈕,提交之後顯示結果。

1,首先,我們需要定義url,因為django對瀏覽器中的url都是有定義要求的,如圖。

clip_image002我在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’可以為其他名稱,模板中呼叫正確即可。

clip_image004

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

clip_image006

這樣,就可以從瀏覽器輸入http://localhost/count_sequence/來執行程式了。