2011-09-23 63 views
0

我有一個django模板,它也有一個div元素,它接受一個user_inputed值。 時輸入的值,我調用javascript函數說的onsubmit(USER_INPUT)使用表格在django模板中獲取用戶輸入變量

<input type="text" class= "inputtext" onKeyPress="return onSubmit(this.value)"> 
中現在有用戶輸入的值USER_INPUT此的onsubmit()函數

現在,我希望能夠使用的URL模式一個直接的看法,像

function onSubmit(user_input) {window.location = "{% url myview user_input %}";} 

這裏的問題是,由於USER_INPUT空當模板被加載,鏈接視圖反向查找給出了一個錯誤。只有在調用onSubmit函數時纔有辦法觸發這個查找。

我知道窗體是一種替代方案,但它只是覺得它會對這種情況有點矯枉過正。

回答

1

您可以通過AJAX獲得的網址:

views.py:

def get_url(request): 
    name = request.GET.get('name') 
    args = reguest.GET.get('args', []) 
    kwargs = request.GET.get('kwargs', {}) 
    try: 
     url = django.core.urlresolvers.reverse(name, args=args, kwargs=kwargs) 
    except NoReverseMatch: 
     url = None 
    return django.http.HttpResponse(url) 

urls.py

#... 
('^url$', get_url) 
#... 

JS:

function onSubmit(user_input) { 
    var args = [user_input]; 
    jQuery.get('/url', {'args': args}, function(data) { 
     var url = data; 
     if (url) { 
      window.location = url; 
     } else { 
      alert('fail'); 
     } 
    }); 
} 

另外,如果您的URL規則很簡單,你可以e一些佔位符解析和URL時,並提交表單之前,你應該用實際輸入代替它:

var fakeUrl = '{% url myview "%s%" %}'; 
function onSubmit(user_input) { 
    window.location = fakeUrl.replace('%s%', user_input); 
} 
+0

謝謝,假的網址之一是我正在尋找的簡單想法! – Devang

+0

剛注意到我錯過了JS中的一些「var」,所以如果你使用這段代碼,你最好檢查一下你是否也錯過了它們。 – dmedvinsky

+0

此外,如果解決方案之一爲您工作,您應該接受答案,以便人們會看到這個問題解決。 (另外,我會獲得更多的代表,他 - 他) – dmedvinsky