姜戈错误。模块 'django.http.request' 没有属性 'POST'
Django error. module 'django.http.request' has no attribute 'POST'
我是 Django 的新手,我正在尝试创建一个简单的 Web 应用程序。我创建了一个登录表单并添加了一个用于注册新用户的超链接。不幸的是,我收到以下错误。
模块 'django.http.request' 没有属性 'POST'
在下面你会发现view.py代码:
from django.shortcuts import render
from django.http import HttpResponse, request
from django.db import connection
from django.contrib.auth.decorators import login_required
import pyodbc
def index(request):
if 'Login' in request.POST:
rows = []
username = request.POST.get('username')
if username.strip() != '':
rows = getLogin(username)
if len(rows) > 0:
return render(request, 'login/welcome.html')
else:
return render (request, 'login/index.html')
else:
return render (request, 'login/index.html')
else:
return render (request, 'login/index.html')
def newUser(requset):
if 'NewUser' in request.POST:
return render(request,'login/newuser.html')
def getLogin(UserName=''):
command = 'EXEC GetLogin\'' + UserName + '\''
cursor = connection.cursor()
cursor.execute(command)
rows = []
while True:
row = cursor.fetchone()
if not row:
break
userName = row[0]
password = row[1]
name = row[2]
email = row[3]
rows.append({'userName': userName, 'password': password, 'name': name, 'email': email})
cursor.close()
return rows
@login_required(login_url='/')
def readLogin(request):
if request.user.is_authenticated:
rows = getLogin()
return render(request, 'login/loginsdata.html', {'rows': rows})
else:
return HttpResponse('You are not authenticated</br>')
此处urls.py登录应用代码:
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
path('logindata/', views.readLogin, name='logindata'),
path('newuser/', views.newUser, name='newuser'),
]
此处newuser.html代码:
{% block content %}
<form method="POST">
{% csrf_token %}
<table>
<tr>
<td>
<lable>Name </lable>
</td>
<td>
<input type="text" name="name">
</td>
</tr>
<tr>
<td>
<lable>Username </lable>
</td>
<td>
<input type="text" name="username">
</td>
</tr>
<tr>
<td>
<lable>Password </lable>
</td>
<td>
<input type="password" name="password">
</td>
</tr>
<tr>
<td>
<lable>Confirm password </lable>
</td>
<td>
<input type="password" name="confirmPassword">
</td>
</tr>
<tr>
<td>
<lable>email </lable>
</td>
<td>
<input type="email" name="email">
</td>
</tr>
<tr>
<td>
<input type="submit" name="save" value="Save" colspan=2>
</td>
</tr>
</form>
{% endblock content %}
在这里您会找到 index.html 页面:
{% block content %}
<table>
<tr>
<td/>
<td/>
<td/>
</tr>
<tr>
</td>
<td>
<form method="POST">
{% csrf_token %}
<table>
<tr>
<td>
<lable>Username </lable>
</td>
<td>
<input type="text" name="username" placeholder="Username">
</td>
</tr>
<tr>
<td>
<lable>Password </lable>
</td>
<td>
<input type="password" name="password" placeholder="Password">
</td>
</tr>
<tr>
<td></td>
<td>
<input type="submit" value="Login" name="Login">
</td>
</tr>
<tr>
<td>
<a href="{% url 'newuser' %}" name="NewUser">Sign Up</a>
</td>
<td>
<a href="">Forget my password</a>
</td>
</tr>
</table>
</form>
</td>
</td>
</tr>
<tr>
<td/>
<td/>
<td/>
</tr>
</table>
{% endblock content %}
您应该检查请求是否为 post。所以而不是
if 'Login' in request.POST:
您应该按照以下方式检查:
if request.method == "POST":
正如@gasman 指出的那样,从 requset
更正为 request
之后。 newUser
的 views.py
将是
def newUser(request):
if 'NewUser' in request.POST:
return render(request,'login/newuser.html')
在此之后你指出你得到了
The view login.views.newUser didn't return an HttpResponse object
因为你的code
里面没有else
部分。因此,如果您的 if
条件失败,那么您的 view
函数不会 return 任何响应,这就是它显示 didn't return an HttpResponse object
的原因。所以 return HttpResponse
如果你的 if
条件失败,那就没问题了。
def newUser(request):
if 'NewUser' in request.POST:
return render(request,'login/newuser.html')
else:
return HttpResponse() #<-------- if else condition fails.
In your case why it fail's
因为在你的newuser.html
你的submit
按钮如下。
<input type="submit" name="save" value="Save" colspan=2>
在您看来,您是在比较值 NewUser
和 request.POST
。所以你的 if
条件失败了,你得到了这个错误。
所以要么在 views.py
中将您的名字更改为 if 'save' in request.POST
。或者在你的 newuser.html
中将 name="save"
更改为 name="NewUser"
你的问题将得到解决。
我是 Django 的新手,我正在尝试创建一个简单的 Web 应用程序。我创建了一个登录表单并添加了一个用于注册新用户的超链接。不幸的是,我收到以下错误。 模块 'django.http.request' 没有属性 'POST'
在下面你会发现view.py代码:
from django.shortcuts import render
from django.http import HttpResponse, request
from django.db import connection
from django.contrib.auth.decorators import login_required
import pyodbc
def index(request):
if 'Login' in request.POST:
rows = []
username = request.POST.get('username')
if username.strip() != '':
rows = getLogin(username)
if len(rows) > 0:
return render(request, 'login/welcome.html')
else:
return render (request, 'login/index.html')
else:
return render (request, 'login/index.html')
else:
return render (request, 'login/index.html')
def newUser(requset):
if 'NewUser' in request.POST:
return render(request,'login/newuser.html')
def getLogin(UserName=''):
command = 'EXEC GetLogin\'' + UserName + '\''
cursor = connection.cursor()
cursor.execute(command)
rows = []
while True:
row = cursor.fetchone()
if not row:
break
userName = row[0]
password = row[1]
name = row[2]
email = row[3]
rows.append({'userName': userName, 'password': password, 'name': name, 'email': email})
cursor.close()
return rows
@login_required(login_url='/')
def readLogin(request):
if request.user.is_authenticated:
rows = getLogin()
return render(request, 'login/loginsdata.html', {'rows': rows})
else:
return HttpResponse('You are not authenticated</br>')
此处urls.py登录应用代码:
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
path('logindata/', views.readLogin, name='logindata'),
path('newuser/', views.newUser, name='newuser'),
]
此处newuser.html代码:
{% block content %}
<form method="POST">
{% csrf_token %}
<table>
<tr>
<td>
<lable>Name </lable>
</td>
<td>
<input type="text" name="name">
</td>
</tr>
<tr>
<td>
<lable>Username </lable>
</td>
<td>
<input type="text" name="username">
</td>
</tr>
<tr>
<td>
<lable>Password </lable>
</td>
<td>
<input type="password" name="password">
</td>
</tr>
<tr>
<td>
<lable>Confirm password </lable>
</td>
<td>
<input type="password" name="confirmPassword">
</td>
</tr>
<tr>
<td>
<lable>email </lable>
</td>
<td>
<input type="email" name="email">
</td>
</tr>
<tr>
<td>
<input type="submit" name="save" value="Save" colspan=2>
</td>
</tr>
</form>
{% endblock content %}
在这里您会找到 index.html 页面:
{% block content %}
<table>
<tr>
<td/>
<td/>
<td/>
</tr>
<tr>
</td>
<td>
<form method="POST">
{% csrf_token %}
<table>
<tr>
<td>
<lable>Username </lable>
</td>
<td>
<input type="text" name="username" placeholder="Username">
</td>
</tr>
<tr>
<td>
<lable>Password </lable>
</td>
<td>
<input type="password" name="password" placeholder="Password">
</td>
</tr>
<tr>
<td></td>
<td>
<input type="submit" value="Login" name="Login">
</td>
</tr>
<tr>
<td>
<a href="{% url 'newuser' %}" name="NewUser">Sign Up</a>
</td>
<td>
<a href="">Forget my password</a>
</td>
</tr>
</table>
</form>
</td>
</td>
</tr>
<tr>
<td/>
<td/>
<td/>
</tr>
</table>
{% endblock content %}
您应该检查请求是否为 post。所以而不是
if 'Login' in request.POST:
您应该按照以下方式检查:
if request.method == "POST":
正如@gasman 指出的那样,从 requset
更正为 request
之后。 newUser
的 views.py
将是
def newUser(request):
if 'NewUser' in request.POST:
return render(request,'login/newuser.html')
在此之后你指出你得到了
The view login.views.newUser didn't return an HttpResponse object
因为你的code
里面没有else
部分。因此,如果您的 if
条件失败,那么您的 view
函数不会 return 任何响应,这就是它显示 didn't return an HttpResponse object
的原因。所以 return HttpResponse
如果你的 if
条件失败,那就没问题了。
def newUser(request):
if 'NewUser' in request.POST:
return render(request,'login/newuser.html')
else:
return HttpResponse() #<-------- if else condition fails.
In your case why it fail's
因为在你的newuser.html
你的submit
按钮如下。
<input type="submit" name="save" value="Save" colspan=2>
在您看来,您是在比较值 NewUser
和 request.POST
。所以你的 if
条件失败了,你得到了这个错误。
所以要么在 views.py
中将您的名字更改为 if 'save' in request.POST
。或者在你的 newuser.html
中将 name="save"
更改为 name="NewUser"
你的问题将得到解决。