有没有办法在表单中实现 Django 模板
Is there a way to implement Django templates in a form
我有一个 Django 表单,管理员可以在其中创建用户特定的页面,我希望管理员在表单中添加 {{username}}
作为输入,这样当创建的页面的内容呈现给用户时,标签{{username}}
成为用户名。
这是我到目前为止尝试过的方法;
views.py:
class CreateCampaignView(LoginRequiredMixin, FormView):
login_url = reverse_lazy('Portal:login')
template_name = 'Portal/PostForm.html'
form_class = PostForm
success_url = reverse_lazy('Portal:feed')
def form_valid(self, form, **kwargs):
form.instance.Subject = form.cleaned_data['Subject']
form.instance.Text_content = form.cleaned_data['Text_content']
form.instance.HTML_content = form.cleaned_data['HTML_content']
template = form.instance.HTML_content
context = Context(dict({'username':'xxxx', 'email':'Test@email.com'}))
template.render(context)
return super().form_valid(form, **kwargs)
此方法返回错误“str object does not have render”,因为 HTML_content 是 forms.py
中的 Text_filed,我找不到解决方法工作。
您应该为表单中的数据创建一个 Template
,因此:
from django.template import <strong>Template</strong>, Context
template = <strong>Template(</strong>form.cleaned_data['HTML_content']<strong>)</strong>
context = Context({'username': 'xxxx'}) # instead of xxxx, users.objects.filter(username='John')
rendered: str = template.render(context)
我有一个 Django 表单,管理员可以在其中创建用户特定的页面,我希望管理员在表单中添加 {{username}}
作为输入,这样当创建的页面的内容呈现给用户时,标签{{username}}
成为用户名。
这是我到目前为止尝试过的方法;
views.py:
class CreateCampaignView(LoginRequiredMixin, FormView):
login_url = reverse_lazy('Portal:login')
template_name = 'Portal/PostForm.html'
form_class = PostForm
success_url = reverse_lazy('Portal:feed')
def form_valid(self, form, **kwargs):
form.instance.Subject = form.cleaned_data['Subject']
form.instance.Text_content = form.cleaned_data['Text_content']
form.instance.HTML_content = form.cleaned_data['HTML_content']
template = form.instance.HTML_content
context = Context(dict({'username':'xxxx', 'email':'Test@email.com'}))
template.render(context)
return super().form_valid(form, **kwargs)
此方法返回错误“str object does not have render”,因为 HTML_content 是 forms.py
中的 Text_filed,我找不到解决方法工作。
您应该为表单中的数据创建一个 Template
,因此:
from django.template import <strong>Template</strong>, Context
template = <strong>Template(</strong>form.cleaned_data['HTML_content']<strong>)</strong>
context = Context({'username': 'xxxx'}) # instead of xxxx, users.objects.filter(username='John')
rendered: str = template.render(context)