You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 15:56:02