2011-07-12 49 views
4

好吧,這是一個很長的問題。我正在使用ExtJS和Django來創建網站。我在網上搜索如何在獲取IFrame時向網址添加查詢參數。所以bascily我有這個在ExtJS中創建一個面板,其中有一個html頁面。我希望能夠在URL中傳遞一個端口號,以便在它調用html時它會自動獲得與vnc連接的端口號。我的VNC客戶端是noVNCExtJs到DJango網址查詢參數

var noVNC = Ext.create('Ext.panel.Panel', { 
    title: "noVNC", 
    frame: false, 
    title: false, 
    width: '100%', 
    height: '100%', 
    layout: 'fit', 
    items: [{ 
     xtype: "component", 
      autoEl: { 
       tag: "iframe", 
       src: "/noVNC" 
      } 
    }] 
}); 

起初,我以爲我可以只是做

src: "/noVNC?port=5900" 

然而,(通過研究)我意識到,你必須編輯views.py和urls.py 我認爲我有urls.py糾正

from django.conf.urls.defaults import * 

urlpatterns = patterns('', 
    url(r'^$', 'kfe.views.index'), 
    url(r'^index$', 'kfe.views.index'), 
    url(r'^noVNC/(?P<port>\d+)/$' , 'kfe.views.noVNC'), 
) 

但我不知道如何使用views.py

def noVNC(request): 
    return render(request, 'noVNC_Auto.html', content_type='text/html') 

希望是足夠的信息。如果不告訴我

感謝

+0

+1大問題。我不熟悉noVNC,那麼爲什麼你需要vnc url pattern「noVNC/5900 /」'?你的觀點是'def noVNC(reques,port):'所以你可以得到端口號 –

+0

好吧,我正在慢慢地找出它。我認爲我得到view.py和urls.py我再次發佈它作爲一個答案,一旦我修復它。 –

回答

2

好了,所以我固定的,這是因爲我的條件(我並不需要在views.py我的任何參數)非常容易的方式。
所以我所做的就是在我的IFrame的HTML頁面,我這樣做

window.onload = function() { 
     con_port = "?port=" + WebUtil.getQueryVar('con_port', null); 

和裏面的ExtJS我這樣做是

var noVNC = Ext.create('Ext.panel.Panel', { 
    title: "noVNC", 
    frame: false, 
    title: false, 
    width: '100%', 
    height: '100%', 
    layout: 'fit', 
    items: [{ 
     xtype: "component", 
      autoEl: { 
       tag: "iframe", 
       src: "/noVNC?con_port=5901" 
      } 
    }] 
}); 

現在我只是在端口號硬編碼的,但你可以再補充你的端口號的字符串,像這樣

src: "/noVNC?con_port=590" + port 

views.py

def noVNC(request): 
    return render(request, 'noVNC_Auto.html', content_type='text/html') 

urls.py

urlpatterns = patterns('', 
    url(r'^$', 'kfe.views.index'), 
    url(r'^index$', 'kfe.views.index'), 
    url(r'^noVNC$' , 'kfe.views.noVNC'), 
+0

好像你已經硬編碼ExtJS中的端口是否正確? –

+0

是的,你可以添加端口#到字符串如此 - src:「/ noVNC?con_port = 590」+端口 –

+0

如果這解決了你的問題我會把它放在答案中,並標記爲正確的其他誰可能有同樣的問題。 –