Установка 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. Спасибо.