Django 模板未接收上下文对象

Posted

技术标签:

【中文标题】Django 模板未接收上下文对象【英文标题】:Django Template Not Receiving Context Object 【发布时间】:2022-01-18 22:07:00 【问题描述】:

我正在尝试实现一个简单的注册表单并稍微扯掉我的头发。出于某种原因,视图似乎没有正确传递我传递给它的上下文对象(不管它是什么。)

这是我的代码:

urls.py

path(r"signup/", client_views.signup_view, name="page-signup")

views.py

def signup_view(request):
if request.method == 'POST':
    form = SignUpForm(request.POST)
    if form.is_valid():
        form.save()
        username = form.cleaned_data.get('username')
        raw_password = form.cleaned_data.get('password1')
        user = authenticate(username=username, password=raw_password)
        login(request, user)
        return redirect('page-index')
else:
    form = SignUpForm()
context = 'form': form
return render(request, 'registration/signup.html', context=context)

注册/signup.html

% extends "base.html" %
% load static %


% block header %
Sign Up
% endblock %


% block content %
    <form method="post">
        % csrf_token %
         form.as_p 
        <button type="submit">Sign Up</button>
      </form>
% endblock %

forms.py

class SignUpForm(UserCreationForm):
    first_name = forms.CharField(max_length=30, required=False, help_text='Optional.')
    last_name = forms.CharField(max_length=30, required=False, help_text='Optional.')
    email = forms.EmailField(max_length=254, help_text='Required. Inform a valid email address.')

    class Meta:
        model = User
        fields = ('first_name', 'last_name', 'email', 'password1', 'password2', )

我已经确认了

    以 html 格式正确生成表单 它肯定也渲染了正确的模板 不传递任何上下文,即使它只是一个字符串或其他东西 不适用于任何表单 在其他模板中不起作用,这意味着它在视图中

我确信这是一个愚蠢的错误,但我一直在为此烦恼 - 任何帮助将不胜感激!

【问题讨论】:

【参考方案1】:

这是因为我的模板标签不匹配

具体来说,我写道:

% bloc content %

而不是

% block body %

【讨论】:

以上是关于Django 模板未接收上下文对象的主要内容,如果未能解决你的问题,请参考以下文章

来自上下文的 Django 数据未显示在模板中

我可以访问 Django 模板列表中第一个对象的属性吗?

[django]上下文管理器

Django测试平台开发开发博客②

上下文未传递给被覆盖的模板

Django - 模板对象访问详细名称