我有一个这样的模型:
models.py
import os
from shutil import copyfile
fileList = []
filePath = 'C:\\AD\\Scripts\\to_split'
for file in os.listdir(filePath):
if file.endswith(".jpg"):
fileList.append(file)
for file in fileList:
fileName = os.path.splitext(file)[0].split("-")
rangeStart = fileName[0]
rangeEnd = fileName[1]
for part in range(int(rangeStart), int(rangeEnd)+1):
copyfile(os.path.join(filePath, file), os.path.join(filePath, str(part) + ".jpg"))
此模型的示例实例为:
from django.db import models
class Foo(models.Model):
text = models.TextField()
值Foo.objects.create(text="My first text [[@shorttext_1@]] random text.")
Foo.objects.create(text="Select something from below [[@multipleselect_1@]]. text.")
Foo.objects.create(text="A different form [[@shorttext_1@]] and another"
"form [[@shorttext_2@]] random texts.")
Foo.objects.create(text="Mixed form [[@shorttext_1@]] and another"
"form [[@multipleselect_1@]] random text.")
,[[@shorttext_1@]]
表示要放置在下面模板中的表单的位置和类型。 [[@multipleselect_1@]]
是随机选择的降价样式占位符。
forms.py
[[@ @]]
views.py
from django import forms
class ShortTextForm(forms.Form): # [[@shorttext_1@]] form
short_text = forms.CharField(max_length=300)
class MultipleSelectionForm(forms.Form): # [[@multipleselect_1@]] form
selection = forms.ChoiceField(
choices=[('A', 'A text'), ('B', 'B text')],
widget=forms.RadioSelect())
templates / index.html
from django.shortcuts import render
def text_view(request):
if request.method == 'POST':
# get the info for each form
else:
foo = Foo.objects.order_by('?').first()
return render(
request=request,
template_name='templates/index.html',
context={'text': foo.text})
是否可以在模板中显示{% extends "base.html" %}
{% block body %}
{{ text }}
{% endblock %}
并呈现所需的表单?
当前,我在foo.text
类中有一个type
变量来指定表单的类型。而且我的视图只能呈现一种所需的形式,该形式只能放在文本的末尾。我只想使用一个模板在文本的任何位置呈现多种形式。
编辑:
举一个我想实现的输出示例:
Foo
此对象应在模板中呈现,以便输出看起来像这样:
答案 0 :(得分:-1)
只需传递foo:
context={'foo': foo}
不是foo.text,而是在模板中使用if...else
语句来确定您要做什么。
这也可以让您访问type
变量:
{% if foo.type == some_type %}
{{ form }}
{% endif %}