猿问

为两个不同的模板使用相同的视图返回表单变量

我有一个显示到订阅页面的订阅表单视图,我也想在主页中显示相同的表单,我尝试使用{% include 'accounts/subscribe.html' %}并{% extends 'accounts/subscribe.html' %}在主页中也尝试过(来自类似问题的建议,但不相同)。我该如何解决这个问题?


指向 subscribe.html 的视图


def subscribe(request):

    if request.method == 'POST':

        subscribe_form = EmailListForm(request.POST)

        if subscribe_form.is_valid():

            subscribe_form = subscribe_form.save()


            return render(request, 'accounts/subscribe_done.html', {'name': subscribe_form.name})


    else:

        subscribe_form = EmailListForm()


    return render(request, 'accounts/subscribe.html', {'sub_form': subscribe_form})


DIEA
浏览 83回答 3
3回答

饮歌长啸

据我所知,这样做的方法是将上面的代码复制到主视图函数,或者提取一个获取请求并返回所需表单对象的方法。无论哪种方式,您都可以像在订阅页面上一样将表单对象传递给主页模板。

慕容森

如果您想将相同的表单呈现到另一个页面(视图),您可以将该表单添加到视图的上下文中,就像在订阅页面上所做的那样。主页视图如下所示:def home_page_view(request):        if request.method == 'POST':        subscribe_form = EmailListForm(request.POST)        if subscribe_form.is_valid():            subscribe_form = subscribe_form.save()            return render(request, 'accounts/subscribe_done.html', {'name': subscribe_form.name})    else:        context = {            'section': 'home',            'posts': Post.published.all().order_by('-publish')[:5],            'subscribe_form': EmailListForm()        }            return render(request, 'pages/page/home.html', context=context)

摇曳的蔷薇

使用{% extends 'xyz.html' %}工作吗?我通常用它来扩展 html 模板。
随时随地看视频慕课网APP

相关分类

Python
我要回答