Django在另一个字段的基础上添加了一个模型字段



我是Django的新手,知道必须有一种简单的方法才能做到这一点:我有一个表单,我希望用户在其中输入YouTube视频的URL(https://www.youtube.com/watch?v=XXXXXXXXXXX)。我想接受输入并将其转换为嵌入YouTube视频的格式(https://www.youtube.com/embed/XXXXXXXXXXX)。

我的models.py字段使用URL字段。我没有forms.py文件(如果需要,我愿意添加一个(,相反,我在HTML页面上单独调用models.py字段。

如果你想添加forms.py文件,我很乐意接受任何建议。我想,在用户输入时,从一种URL格式移动到另一种格式的最干净的方法是对原始用户输入进行切片并连接,但我不知道Django中的位置或格式

使用代码编辑:我使用了一个建议,并在我的views.py文件中添加了一行,但我认为我可能引用错了,因为我无法将其填充到HTML文件中。任何想法都会受到的赞赏

型号.py

class HomeDesc(models.Model):
street = models.CharField(max_length = 200)
city = models.CharField(max_length = 64)
zip_code = models.IntegerField(default = 00000)
bedrooms = models.IntegerField(default=3)
full_bathrooms = models.IntegerField(default=2)
half_bathrooms = models.IntegerField(default=1)
video = models.URLField(max_length=400, default = 'xxx')

views.py

def SingleHome(request, pk):
hl = HomeDesc.objects.get(pk=pk)
video_embed = hl.video.replace("https://www.youtube.com/watch?v=", "https://www.youtube.com/embed/")
ctx = {'home': hl, 'video': video_embed}
return render(request, template_name = 'homedb/single_home.html', context=ctx)

html文件的一部分:

% if home %}
<h1>{{ home.street }}</h1>
<ul>
<li><iframe width="560" height="315" src="{{ video.video_embed }}" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></li>
<li>City: {{ home.city }}</li>

我有点不确定在哪里,但就如何做而言,我认为最简单的方法是如下

url = "https://www.youtube.com/watch?v=XXXXXXXXXXX"
url = url.replace("https://www.youtube.com/watch?v=", "https://www.youtube.com/embed/")

关于哪里,我假设你会在控制器中用任何你需要的方法来做这件事。希望这对你有一些用处。

最新更新