如何在Django的另一个应用的视图中使用我的base.html模板?

k3fezbri  于 2023-01-18  发布在  Go
关注(0)|答案(1)|浏览(178)

我正在尝试在页脚中实现一个新闻稿。我的页脚存储在base.html文件中,问题是我需要在另一个应用程序中呈现这个模板。
下面是我的代码:

@csrf_exempt
def new(request):
    if request.method == 'POST':
        sub = Subscriber(email=request.POST['email'], conf_num=random_digits())
        sub.save()
        message = Mail(
            from_email=settings.FROM_EMAIL,
            to_emails=sub.email,
            subject='Newsletter Confirmation',
            html_content='Thank you for signing up for the StockBuckets email newsletter! \
                Please complete the process by \
                <a href="{}/confirm/?email={}&conf_num={}"> clicking here to \
                confirm your registration</a>.'.format(request.build_absolute_uri('/confirm/'),
                                                    sub.email,
                                                    sub.conf_num))
        sg = SendGridAPIClient(settings.SENDGRID_API_KEY)
        response = sg.send(message)
        return render(request, 'index.html', {'email': sub.email, 'action': 'added', 'form': SubscriberForm()})
    else:
        return render(request, 'index.html', {'form': SubscriberForm()})

我想把这个视图中return语句中index.html的两个示例都替换成base.html,我该怎么做呢?

oknwwptz

oknwwptz1#

在Django中,所有的模板文件都将被收集在一个模板文件夹中。所以我们必须创建这样的文件夹。

Django_project/
    app_1/
        ..
    app_2/
        ..
    app_3/
        ..
    Django_project/
        settings.py
        manage.py
    templates/
        app_1/
            base.html
            other.html
        app_2/
            base.html
            other.html
        app_3/
            base.html
            other.html
        other_common.html

或者用户可以将模板添加到应用程序本身内,

Django_project/
    app_1/
        templates/
            app_1/
                base.html
                other.html
    app_2/
        templates/
            app_1/
                base.html
                other.html

现在,如果您想使用来自另一个应用的基础模板,请在渲染函数中添加app_1/base.html

相关问题