【问题标题】:Using Form in Django - get() missing 1 required positional argument: 'header'在 Django 中使用表单 - get() 缺少 1 个必需的位置参数:'header'
【发布时间】:2018-02-04 23:49:55
【问题描述】:

目前在 Django 中工作并尝试做一个关于表单的简单教程,但是在提交表单时收到错误消息。

这是我的 urls.py:

from .views import*
urlpatterns = [
url(r'^name/', get_name, name='TheName'),
url(r'^name/present/', present, name='Present'),
]

以下是观点:

def get_name(request):
   if request.method == 'POST':
    form = NameForm(request.POST)
    if form.is_valid():
        return HttpResponseRedirect
   else:
    form = NameForm()

   return render(request, 'home/name.html', {'form': form})


def present(request):
   return render(request, 'home/present.html')

这是表格:

class NameForm(forms.Form):
    your_name = forms.CharField(label='Your name', max_length=100)

这里是name.html:

<form action="present/" method="post">
   {% csrf_token %}
   {{ form }}
   <input type="submit" value="Submit" />
</form>

这是我的present.html:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>{{ your_name }}</title>
</head>
<body>

</body>
</html>

点击提交后,回溯错误信息:

Environment:

Request Method: POST
Request URL: http://localhost:8000/name/present/

Django Version: 1.11.4
Python Version: 3.6.2
Installed Applications:
['django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware']

Traceback:

File   "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/django/core/handlers/exception.py" in inner
41.             response = get_response(request)

File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/django/utils/deprecation.py" in __call__
142.             response = self.process_response(request, response)

File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/django/middleware/clickjacking.py" in process_response
32.         if response.get('X-Frame-Options') is not None:

Exception Type: TypeError at /name/present/
Exception Value: get() missing 1 required positional argument: 'header'

任何帮助将不胜感激!

【问题讨论】:

    标签: python html django forms


    【解决方案1】:

    您需要告诉表单提交成功后重定向到哪里。你只是在做return HttpResponseRedirect 这是无效的,应该是:

    return HttpResponseRedirect(the_path_to_redirect_to)
    

    请阅读有关 HttpResponseRedirect 的文档。

    【讨论】:

    • 我现在意识到我的错误了!非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-06
    • 2021-12-21
    • 2018-06-20
    • 2017-10-20
    • 1970-01-01
    • 2018-01-24
    • 2019-05-27
    相关资源
    最近更新 更多