Django模板中iframe的src属性无法动态加载gitUrl问题
Django开发问题:iframe动态绑定GitHub地址为空
背景说明
我正在进行Django开发练习,定义了AllTemplates模型用于管理所有开发的模板,其中gitUrl属性用于获取url字段中存储的GitHub仓库地址:
class AllTemplates(models.Model): categories = [ ('landing-page', '落地页') ] id = models.IntegerField(primary_key=True) name = models.CharField(max_length=100) image = models.ImageField(null=True, blank=True) category = models.CharField( max_length=200, choices=categories, default='landing-page') url = models.CharField(max_length=500, null=True) def __str__(self): return self.name @property def templateNumber(self): try: number = self.id except: number = '' return number @property def templateTitle(self): try: title = self.name except: title = '' return title @property def imageURL(self): try: url = self.image.url except: url = '' return url @property def gitUrl(self): try: gitPath = self.url except: gitPath = '' return gitPath
我需要为每个模板生成预览页面,在页面的iframe标签中动态设置src属性为对应模板的GitHub地址,但目前该src属性始终为空。
已尝试的实现步骤
- urls.py配置:添加动态路由指向preview视图
from django.urls import path from . import views app_name = 'websiteEcomm' urlpatterns = [ path('', views.home, name='home'), path('landing-page/', views.landingPage, name='landing-page'), path('preview/<str:siteTitle>/', views.preview, name='preview'), ]
- views.py实现:preview视图通过siteTitle参数获取对应模板对象,并传递到模板中
from django.shortcuts import render from .models import * # Create your views here. allTemplates = AllTemplates.objects.all() landingPage = AllTemplates.objects.filter(category='landing-page') context = {'allTemplates': allTemplates, 'landingPage': landingPage} def home(request): return render(request, 'websiteEcomm/home.html', context) def landingPage(request): return render(request, 'websiteEcomm/landingPage.html', context) def preview(request, siteTitle): siteTitle = AllTemplates.objects.get(name=siteTitle) website = AllTemplates.objects.all() previewContext = {'siteTitle': siteTitle, 'website': website} return render(request, 'websiteEcomm/preview-templates/base.html', previewContext)
- 模板文件base.html:使用模板变量设置iframe的src属性
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title> {{siteTitle}} - Free Attitude Template</title> </head> <body> <iframe src="{{website.gitUrl}}" frameborder="0"></iframe> </body> </html>
问题现象
页面其余内容正常渲染,但iframe的src属性为空,浏览器渲染后的代码如下:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title> Medicio - Free Attitude Template</title> </head> <body> <iframe src="" frameborder="0"></iframe> </body> </html>
内容的提问来源于stack exchange,提问作者Andrea
相关产品推荐
相关产品推荐

