iT邦幫忙

1

Django與獨立python連接

  • 分享至 

  • xImage

各位大老大家好,初次使用Django並對於網頁是完完全全的新手所以遇到了一個問題

目前對於Django的了解於是使用 urls連接views,而views在與templates資料夾中的html做連結,使得網頁動作

目前已經有額外寫好的獨立python程式(test.py),我想讓html的submit按下的時候,可以讓(test.py)讀取到html的值,並且回傳運作結果回html顯示.

目前的大致想法是
1.使用Django的自定義標籤 去將原本的(test.py)改寫,就是在app的資料夾下方建立一個新的.py檔案並設成@register.simple_tag

2.使用 action=" python 檔案路徑 ",去看可不可以連接

請問一下上方的想法是正確的嗎,目前沒有找到很適合我想法的文章或是講解,或者有其他解法.

froce iT邦大師 1 級 ‧ 2022-03-12 16:49:45 檢舉
python有個功能叫import...
r5823578 iT邦新手 5 級 ‧ 2022-03-13 22:20:05 檢舉
大大不好意思 不是很懂您想表達的意思,曾經使用過直接import test.py的東西 來使用但是與網頁連接的時候boom了
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

1
grimmq52156
iT邦新手 5 級 ‧ 2022-03-13 11:51:59

TL;DR

  1. 在app中的urls.py註冊你的url
  2. 在app中的views.py做你想做的事,然後render出來

說明

你這段對Django的理解是對的

對於Django的了解於是使用 urls連接views,而views在與templates資料夾中的html做連結,使得網頁動作

現在你想要這樣做

圖示1

在Django中,若要讓HTTP request直接丟到你指定的py檔案,也就是讓你的action="test.py"可以達到你要的效果,或許可行,但這會讓事情變複雜,同時也失去了用Django的優勢,因為Django可以讓你輕鬆達到你想要的結果,而且很簡單,我們來看使用Django,你可以怎麼做(下圖為簡化後的流程):

圖示2

首先,你要先註冊url,讓表單的action可以送到你註冊的url

# app/urls.py

# ...

app_name = 'app'
urlpatterns = [
    path('test', views.test, name='test'),
]

然後指定你的表單 action="{% url 'app:test' %}" (這邊使用django templage tag),這樣在表單送出之後,Django就會幫你把表單送到app/views.py中的test function,你就可以在裡面做任何你想要的處理,最後再渲染結果

# app/views.py

# ...

def test(request):
    # ...
    # 處理表單
    # ...
    
    context = {
        'var1': var1,
        'var2': var2,
        'results': result
    }
    return render(request, 'app/test.html', context)

就這樣,很容易吧!

這邊很推薦原po把Django Tutorial做完,它很完整地演示了基本的Django使用方式,讓你學會渲染html,而且讓你體驗一下強大的Django Admin功能!

備註:由於我這些年主要都是使用PHP+Laravel,跳來Django的時間不長,如果哪邊有錯誤或是Not so Django,再請指教,謝謝~

看更多先前的回應...收起先前的回應...
r5823578 iT邦新手 5 級 ‧ 2022-03-13 22:20:26 檢舉

好的謝謝 近期測試一下 感謝大大的回答

froce iT邦大師 1 級 ‧ 2022-03-14 09:21:26 檢舉

他只需要

  1. 把獨立的py改成函式或物件
  2. 在相對應的views.py import進去
  3. 在對應的處理函式裡面執行
    就好了。

甚至懶一點把獨立的py內容改一下貼在views.py正確的地方就行...

沒錯,就像您說的,實際上解法不會很難,但對於剛接觸Django的人來說,「貼在正確的地方」這件事本身其實不容易,要了解Django框架基本的規則及才會知道「正確的地方」,我覺得原po除了想解決他的問題外,可能想要更了解Django,所以就試著多寫了一些。

r5823578 iT邦新手 5 級 ‧ 2022-03-14 18:24:36 檢舉

好的謝謝各位的建議 我會先嘗試看看感恩各位

我要發表回答

立即登入回答