【问题标题】:Render Form Data to the Same Page将表单数据呈现到同一页面
【发布时间】:2016-11-27 13:22:51
【问题描述】:

表格有效。输入显示在规则上。但是模板显示一个空白页。救命!

views.py

class StandingsView(FormView):
    form_class = SelectTeam
    template_name = 'teamsports/standings.html'
    model = Teams
    success_url = None

    def form_valid(self, form):
        form=SelectTeam
        data = self.request.GET.get('team_name')
        team = Teams.objects.filter(team_name__icontains=data).values()
        return render(self.request, 'teamsports/standings.html', {'team': team})

模板.html

{% extends 'teamsports/base.html' %}

    {% block content %}
    <h1>Pick your team, chump</h1>

<form form_name = SelectTeam action="" method="GET">
    {{ form }}
    <input type="submit" value="Submit" />
    {{ form.errors }}
</form>    

<h1> {{ team }} </h1>
    {% for team in Teams %}
        <h1>{{ team.team_name }}</h1>
    {% endfor %}
{% endblock %}

来自 settings.py 的更新 - 尽管我没有传递任何变量,但我的基本模板和主模板会扩展。

TEMPLATES = [
{
    'BACKEND': 'django.template.backends.django.DjangoTemplates',
    'DIRS': [
        '/home/mrsaltz/thepub/teamsports/templates/teamsports',
        ],
    'APP_DIRS': True,
    'OPTIONS': {
        'context_processors': [
            'django.template.context_processors.debug',
            'django.template.context_processors.request',
            'django.contrib.auth.context_processors.auth',
            'django.contrib.messages.context_processors.messages',
                    ],
    },
},
]

【问题讨论】:

  • 我只是尝试在我的环境中迭代您的情况,一切正常。我的意思是我的模板中有表格和模型。可能是您的模板命名有问题?
  • 谢谢!模板与 base.html 位于同一目录中。会不会是我的网址? url(r'^standings/$', views.StandingsView.as_view(), {'team':'team'}, name='standings'),

标签: django django-forms django-templates


【解决方案1】:

我只是尝试在我的环境中迭代您的情况,一切正常。我的意思是我的模板中有表格和模型。您的模板命名可能有问题。

您的视图中已经有字典 {'team:team'}。所以你的视图应该是这样的:

url(r'^standings/$', views.StandingsView.as_view()),

您的模板线程应如下所示:

TEMPLATES = [
    {                                                                                                   
        'BACKEND': 'django.template.backends.django.DjangoTemplates',                                   
        'DIRS': [
                        os.path.join(BASE_DIR, 'templates'),                                            
                ],
        'APP_DIRS': True,
        'OPTIONS': {                                                                                    
            'context_processors': [                                                                     
                'django.template.context_processors.debug',                                             
                'django.template.context_processors.request',                                           
                'django.contrib.auth.context_processors.auth',                                          
                'django.contrib.messages.context_processors.messages',                                  
            ],                                                                                          
        },
    },          
]    

然后它是您项目的根目录,您必须拥有template 文件夹。 在template 文件夹中,您必须拥有看起来像这样的base.html 文件:

<body>
   {% block main %}{% endblock %}
</body>

然后在模板文件夹中创建与您的应用程序相同的文件夹,因为我了解它的teamsports,然后您的standings.html 文件应如下所示:

{% extends 'base.html' %}
{% block main %}
    <h1>Pick your team, chump</h1>

<form form_name = SelectTeam action="" method="GET">
    {{ form }}
    <input type="submit" value="Submit" />
    {{ form.errors }}
</form>    

<h1> {{ team }} </h1>
    {% for team in Teams %}
        <h1>{{ team.team_name }}</h1>
    {% endfor %}
{% endblock %} 

注意,如果base.html 中有{% block main %}{% endblock %}standings.html 中应该有相同的标签。

【讨论】:

  • 更新了我的网址,还是同样的问题。我得到了表单,我可以提交,我在浏览器中看到了数据,但没有呈现任何其他内容。
  • 是否只有一个模板存在问题。如果它是唯一的模板,请在设置文件中显示您的 TEMPLATES 线程
  • 澄清一下 - 我的文件树是 /home/me/project/teamsports/templates/teamsorts/tempates。我将 base.html 移至第一个模板文件夹。然后我不得不调整我的standings.html。 base.html 渲染得很好,并且表单工作正常。我仍然无法弄清楚为什么“团队”没有从视图传递到模板。再次感谢您
  • 如果您将 base.html 移到第一个模板中,那么您必须更改与我的回答相同的模板目录。然后在第一个模板目录创建文件夹teamsports,文件standings.html(与您的视图相同)。那么您必须将代码粘贴到standings.htm中,与我的答案相同
  • 做到了。两种表单都呈现(我看到我的基本标题和表单,加上“团队”标题),但提交时没有变量。该死,对不起
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多