Параметры запроса ExtJs to DJango url - PullRequest
4 голосов
/ 13 июля 2011

Хорошо. Так что это довольно длинный вопрос. Я использую ExtJS и Django для создания сайта. Я ищу в интернете, как добавить параметры запроса в URL, когда получаю 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 Ответ

2 голосов
/ 13 июля 2011

Хорошо, поэтому способ, которым я это исправил, был очень легок из-за моих условий (мне не нужны были мои аргументы в views.py).
То, что я сделал, было на моей html-странице IFrame. Я сделал это

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