ExtJs到DJango url查询参数

时间:2011-07-12 23:44:45

标签: django extjs vnc

好的,这是一个很长的问题。我正在使用ExtJS和Django来创建一个网站。我在互联网上搜索如何在获取IFrame时将查询参数添加到网址。所以基本上我有这个在ExtJS中创建一个面板,里面有一个html页面。我希望能够在url中传递一个端口号,这样当它调用html时,它将自动拥有与vnc连接的端口号。我的VNC客户端是noVNC

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')

希望这是足够的信息。如果不是只告诉我

由于

1 个答案:

答案 0 :(得分: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'),