【问题标题】:Django form not showing upDjango表单没有出现
【发布时间】:2020-08-20 22:10:41
【问题描述】:

我是 django 新手,试图在 html 文件中显示表单,但我看不到字段。 我可以看到除了表单之外的所有内容。

任务:

允许用户在侧边栏的搜索框中输入查询以 搜索百科全书条目。

views.py

def index(request):
    entries = util.list_entries()
    searched = []

    if request.method == "POST":
        form = Search(request.POST)
        if form.is_valid():
            item = form.cleaned_data["item"]
            for i in entries:
                if item in entries:
                    page = util.get_entry(item)
                    page_converted = markdowner.convert(page)
                    
                    context = {
                        'page': page_converted,
                        'title': item,
                        'form': Search()
                    }

                    return render(request, "encyclopedia/entry.html", context)
                if item.lower() in i.lower(): 
                    searched.append(i)
                    context = {
                        'searched': searched, 
                        'form': Search()
                    }
            return render(request, "encyclopedia/search.html", context)

        else:
            return render(request, "encyclopedia/index.html", {"form": form})
    else:
        return render(request, "encyclopedia/index.html", {
            "entries": util.list_entries(), "form":Search()
        })

layout.html

<div class="sidebar col-lg-2 col-md-3">
    <h2>Wiki</h2>
    <form method="post" action="{% url 'index' %}">
    {% csrf_token %}
        {{form.item}}
    </form>
    <div>
        <a href="{% url 'index' %}">Home</a>
    </div>
    <div>
        <a href="{% url 'create' %}">Create New Page</a>
    </div>
    <div>
        <a href="{% url 'random' %}">Random Page</a>
    </div>
    {% block nav %}
    {% endblock %}
</div>

搜索类

class Search(forms.Form):
    items = forms.CharField(widget=forms.TextInput(attrs={'class': 'myfieldclass', 'placeholder': 'search'}))

【问题讨论】:

  • 不应该 layout.htmlindex.html,或者这是一个错字?您没有在任何地方发送“layout.html”
  • 您应该提供结果为错误或呈现的 html 并且请更正缩进
  • 2 个不同的文件。 index.html 扩展 layout.html
  • form 在方法 != 'POST' 时未定义
  • @GAEfan 我添加了关于它的答案你能看到我的编辑答案:) 和改进

标签: django django-forms


【解决方案1】:

尝试{{ form.as_p }} 或仅使用{{ form }} 而不是{{ form.item }}

我认为item 没有指代任何东西。


更新:

Search 表单类中有错字。字段名称应为item 而不是items

【讨论】:

  • 来自这里item = form.cleaned_data["item"]
  • @EdyEduard 你试过我说的吗?
  • 是的。表单出现了,但现在我在项目 item = form.cleaned_data["item"] 处得到一个关键错误
  • @EdyEduard 更新问题并添加Search 表单类的内容。它应该包含一个字段 item 否则,无论您何时尝试获取它都会得到 KeyError
  • @EdyEduard 在Search 表单类的字段名称中多了一个s
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-01-05
  • 2017-07-07
  • 1970-01-01
  • 1970-01-01
  • 2014-03-03
  • 2010-11-29
  • 1970-01-01
相关资源
最近更新 更多