2016-11-07 35 views
2

我正在開發我的第一個django項目,這也是我的第一個後端項目。在我已經完成的教程/閱讀中,我沒有遇到沒有模型形式的傳遞信息回django。Django - 初學者 - 什麼是通過url傳遞信息到視圖的過程?

我的意圖是使用javascript計算頁面上的值,並在用戶點擊該頁面上的提交按鈕時將其傳遞給django。提交按鈕也將是另一個頁面的鏈接。我知道如果我知道如何將信息傳遞迴django,我可以通過url在視圖中處理信息。

我知道django使用MVC,因爲我有我的模型和視圖,我相信這與控制器有關。

基本上,我想知道如何將信息從頁面傳遞到django,因爲用戶可以跟隨另一個頁面的鏈接。我明白,這不是針對特定主題的長時間教程的地方,但我很感謝任何有關此主題的資源鏈接。我不知道這個過程甚至被稱爲什麼,所以我不能爲它搜索文檔。

編輯: 從進一步閱讀,我認爲我想使用提交按鈕來獲取或POST值。在這種情況下,POST可能會更好。有人可以證實這是真的嗎?

回答

2

是的,通常POST是比GET更好的提交數據的方式。在Django中有一些關於術語的混淆。雖然Django實際上是MVC,但模型是模型,但視圖實際上是控制器,視圖是模板。既然你要使用AJAX來提交和檢索數據,你不關心模板。所以,你最有可能想要的東西是一樣的東西在你的urls.py這

爲您urlpatterns的變量

 
url(r'mything/$', MyView.as_view()) 

在視圖中的一部分。PY

 
from django.views import View 
from django.http import HttpResponse 

class MyView(View): 
    def post(self, request): 
     data = request.POST 
     ... do your thing ... 
     return HttpResponse(results) 

,並在你的JavaScript

 
jQuery.post('/mything/', data, function() { whatever you do here }) 
1

有很多方法,你可以在django中做到這一點。以下是兩種方式,我一般喜歡: -

1)如URL

eg. http://localhost/getPatientInfo?patientId=23&name=Sachin 

2)製作網址動態查詢字符串參數,包括在視圖本身的信息。

eg. http://localhost/patientInfo/23/Sachin 

在案例1: - 你將不得不做,

patientId = request.GET["patientId"] 
name  = request.GET["patientName"] 

在案例2: 您的網址conf就會是這樣的:

urls = [ 
    url("^patientInfo/(\d+)/([^/]+)$", yourViewFunc) 
] 

而在你的看法功能: -

def yourViewFunc(request, patientId, patientName): 
     # your logic goes here 
     pass 

有關信息。與URLConf相關,請參閱https://docs.djangoproject.com/en/1.10/topics/http/urls/#example

+0

謝謝您的回答,我想我是不夠明確地說,我並不想用模型數據並傳遞到URL 。我想在頁面上生成一個變量,可能使用JavaScript。當用戶點擊提交按鈕時,我希望將該變量傳遞給django,以便我可以在url的視圖中處理它。 – Era

+1

@Era你可以通過鏈接傳遞JS變量。例如yourwebsite.com/jsvar。在做這些之前,您需要在網址和視圖中進行適當的設置。 –