2017-06-13 177 views
1

自2005年以來,我一直在使用WordPress,將所有網站切換到Django Projects。這是我的第一個Django項目,將有多個Web應用程序。如何在Django中使用iframe進行生產?

我正在使用Visual Studio Preview 2017創建我的Django項目。 在我的項目中,我設置了一個主要的Web應用程序,該應用程序包含保存主要HTML頁面的項目urls.py,view.py,model.py和templates文件夾。這個主要的網絡應用程序將連接到項目中的其他網絡應用程序。

我知道web應用程序開發的目標是讓一個人留在web應用程序上。據說,我需要添加博客和附屬頁面到我的項目。我知道如何做到這一點的唯一方法是iframe。

我在這個網站上發現了一個選項,但它沒有任何意義,除了添加|安全的網址。 [1]:generate iframe from django tag

我看了上面的鏈接和我有的問題,如果我需要在我的代碼中使用序列化程序爲我的項目Web應用程序?

我的代碼是:

阿菲的Web應用程序

web_host_python.html

 <html> 
<head><title>Web Host Python Hosting</title></head> 

<body> 

{{ whpaff.html | safe }} 

</body> 
</html> 

whpaff.html

<!DOCTYPE html> 

<html lang="en" xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <meta charset="utf-8" /> 
    <title></title> 
</head> 
<body> 
    <iframe src=" https://www.webhostpython.com/billing/aff.php?aff=69" 
        style="border:0px #ffffff none;" name="web_host_python" 
        scrolling="no" frameborder="1" marginheight="0px" 
        marginwidth="0px" 
        height="100%" width="100%" allowfullscreen></iframe> 
</body> 
</html> 

urls_affi.py

from django.conf.urls import url 
from . import views 

urlpattens = [ 
    url(r'^$', views.home), 
    ] 

view_affi.py

from django.shortcuts import render, HttpResponse 

# Create your views here. 
def web_host_python(request): 
    return render(request, 'affi/web_host_python.html') 

項目主要應用

url.py

""" 
Definition of urls for affiliate_sites. 
""" 

from datetime import datetime 
from django.conf.urls import url 
import django.contrib.auth.views 

import app.forms 
import app.views 

# Uncomment the next lines to enable the admin: 
# from django.conf.urls import include 
# from django.contrib import admin 
# admin.autodiscover() 

urlpatterns = [ 
    # Examples: 
    url(r'^affi$', views_affi.web_host_python, name='web_host_python), 
    url(r'^$', app.views.home, name='home'), 
    url(r'^contact$', app.views.contact, name='contact'), 
    url(r'^about', app.views.about, name='about'), 
    url(r'^login/$', 
     django.contrib.auth.views.login, 
     { 
      'template_name': 'app/login.html', 
      'authentication_form': app.forms.BootstrapAuthenticationForm, 
      'extra_context': 
      { 
       'title': 'Log in', 
       'year': datetime.now().year, 
      } 
     }, 
     name='login'), 
    url(r'^logout$', 
     django.contrib.auth.views.logout, 
     { 
      'next_page': '/', 
     }, 
     name='logout'), 

    # Uncomment the admin/doc line below to enable admin documentation: 
    # url(r'^admin/doc/', include('django.contrib.admindocs.urls')), 

    # Uncomment the next line to enable the admin: 
    # url(r'^admin/', include(admin.site.urls)), 

view.py

""" 
Definition of views. 
""" 

from django.shortcuts import render 
from django.http import HttpRequest 
from django.template import RequestContext 
from datetime import datetime 

def web_host_python(request): 
    """Renders the home page.""" 
    assert isinstance(request, HttpRequest) 
    return render(
     request, 
     'affi/web_host_python.html' 
     { 
      'title':'affi/web_host_python.html', 
      'year':datetime.now().year, 
     } 
    ) 

def home(request): 
    """Renders the home page.""" 
    assert isinstance(request, HttpRequest) 
    return render(
     request, 
     'app/index.html', 
     { 
      'title':'Home Page', 
      'year':datetime.now().year, 
     } 
    ) 

def contact(request): 
    """Renders the contact page.""" 
    assert isinstance(request, HttpRequest) 
    return render(
     request, 
     'app/contact.html', 
     { 
      'title':'Contact', 
      'message':'Your contact page.', 
      'year':datetime.now().year, 
     } 
    ) 

def about(request): 
    """Renders the about page.""" 
    assert isinstance(request, HttpRequest) 
    return render(
     request, 
     'app/about.html', 
     { 
      'title':'About', 
      'message':'Your application description page.', 
      'year':datetime.now().year, 
     } 
    ) 

是任何的這種正確我做了什麼?

或者是否有替代和更簡單的方法來做在Django的iframe?

謝謝你的所有建議。

馬庫斯

回答

0

你可以嘗試添加在iframe標籤,像這樣到HTML而不是加載iframe的HTML內容。例如:

<body> 
    <iframe src="https://www.mxysite.com" frameborder="0"></iframe> 
</body> 

除非也許我誤解了你的部分問題?

+0

David, 您正在談論whpaff.html文件嗎? 而這個代碼將它整個頁面? Marcus – Marcus

1

我不認爲你的代碼在做你的想法。在調用render()函數時,{{ whpaff.html | safe }}將查找名爲whpaff的參數以傳遞到模板中,然後將該參數的html屬性的值嵌入到生成的輸出中。您正在將其他參數titlemessageyear傳遞給render()函數的某些部分,但我沒有看到通過whpaff參數的任何地方。我想你打算讓它神奇地加載文件「whpaff.html」,並將該文件的內容嵌入到輸出中,但這並不是塊在Django模板中的工作方式。

另一方面,是一個HTML標記,允許您顯示來自頁面中某個其他URL的內容。 Django與沒有直接關係。您可以像在任何其他HTML標記中一樣在您的Django模板中包含標記,或者您可以使用標記來引用由Django生成的URL,但在這兩種情況下,Django都不知道或關心。

+0

我在其他的Stackoverflow鏈接中看到我在介紹使用|在Django中爲iframe安全。這裏是鏈接https://stackoverflow.com/questions/43432537/generate-iframe-from-django-tag但這是url.py和view.py的一個單獨的部分我也明白,iframe是一個html標籤,但它必須通過Django進行通信。你可以看看上面的鏈接,告訴我如何做到這一點,我在做什麼。另外它還顯示序列化器用於我正在嘗試做的事情。 – Marcus

+0

'safe'過濾器告訴Django模板系統不要轉義任何HTML代碼,它可能會在嵌入的值中找到它。當您信任數據源時會使用它。否則,Django模板會假設所有嵌入數據都是潛在的風險,並且會阻止可能用於HTML注入攻擊的標記。 https://stackoverflow.com/questions/4056883/when-should-i-use-escape-and-safe-in-djangos-template-system – ThatAintWorking

相關問題