Установка url iframe для доступа к страницам в навигационной панели в Django

Я новичок во фреймворке Django. Я пытаюсь использовать html страницы в шаблонах и получить интерфейсы. Я получил все страницы одну за другой. Теперь я хочу, чтобы они отображались в iframe. Вот мой html-код в странице homeAdmin.html.

<body>
    <div class="main-nav">
        <div class="main-nav-ul">
            <a href="{% url 'welcomeAdmin' %}" target="frame1"><span class="fa fa-home fa-lg"></span> Home</a>
            <a href="{% url 'register' %}" target="frame1"><span class="fa fa-user-plus fa-lg"></span> Register</a>
            <a href="{% url 'company' %}" target="frame1"><span class="fa fa-building fa-lg"></span> Company</a>
            <a href="{% url 'supplier' %}" target="frame1"><span class="fa fa-taxi fa-lg"></span> Supplier</a>
            <a href="{% url 'category' %}" target="frame1"><span class="fa fa-mouse-pointer fa-lg"></span> Category</a>
            <a href="{% url 'role' %}" target="frame1"><span class="fa fa-id-badge fa-lg"></span> Role</a>
        </div>
        <div class="target">
            <iframe src="{% url 'welcomeAdmin' %}" name="frame1" id="frame1" style="width: 100%;height: 540px; float: right;"></iframe>
        </div>
    </div>
</body>

Вот код views.py, который я написал для решения этой проблемы.

``` from django.shortcuts import render
from django.http import HttpResponse

def welcomeAdmin(request):
    return render(request, 'newapp/welcomeAdmin.html')
def category(request):
    return render(request, 'newapp/category.html')
def company(request):
    return render(request, 'newapp/company.html')
def register(request):
    return render(request, 'newapp/register.html')
def role(request):
    return render(request, 'newapp/role.html')
def supplier(request):
    return render(request, 'newapp/supplier.html')
def homeAdmin(request):
    return render(request, 'newapp/homeAdmin.html') ```

Мне не хватает знаний о том, что делать дальше в каком файле, например в urls.py. Вот код, который я пробовал, но он не работает.

``` from django.urls import path
from . import views
from django.views.generic,base import TemplateView

urlpatterns = [
    url(r'^welcomeAdmin/', TemplateView.as_view(template_name='welcomeAdmin.html'), name="welcomeAdmin"),
    path('', views.homeAdmin, name='homeAdmin'),
    path('welcomeAdmin', views.welcomeAdmin, name='welcomeAdmin'),
    path('category', views.category, name='category'),
    path('company', views.company, name='company'),
    path('register', views.register, name='register'),
    path('role', views.role, name='role'),
    path('supplier', views.supplier, name='supplier'),   
] ```

Все html файлы находятся в одном и том же месте. Я буду очень благодарен, если кто-нибудь сможет помочь мне в этом. Спасибо.

Я нашел решение из того, что мне удалось найти на данный момент. В фреймворке Django ограничили опции iframe, потому что это может вызвать угрозы безопасности. Поэтому если вы хотите включить iframe, добавьте эти части в файл settings.py

X_FRAME_OPTIONS = 'SAMEORIGIN'

И в файле views.py добавьте следующие коды.

В начале:

from django.views.decorators.clickjacking import xframe_options_deny
from django.views.decorators.clickjacking import xframe_options_sameorigin

В соответствующей функции def:

@xframe_options_sameorigin
def home(request):
    return render(request, 'newapp/home.html')

Теперь вы можете видеть домашнюю страницу с iframe. Спасибо.

Вернуться на верх