Python 错误:不允许使用方法(POST):";POST/HTTP/1.1“;405 0
我试图在主页上注册,所以我没有一个单独的URL来处理注册。我试图通过Python 错误:不允许使用方法(POST):";POST/HTTP/1.1“;405 0,python,django,django-forms,django-views,Python,Django,Django Forms,Django Views,我试图在主页上注册,所以我没有一个单独的URL来处理注册。我试图通过get\u context\u data发送表单,但它不起作用。这是我的密码: forms.py class UserRegistrationForm(forms.ModelForm): password = forms.CharField(widget=forms.PasswordInput) class Meta: model = User fields = [
get\u context\u data
发送表单,但它不起作用。这是我的密码:
forms.py
class UserRegistrationForm(forms.ModelForm):
password = forms.CharField(widget=forms.PasswordInput)
class Meta:
model = User
fields = [
'username',
'password',
]
class BoxesView(ListView):
template_name = 'polls.html'
def get_context_data(self):
context = super(BoxesView, self).get_context_data()
# login
if self.request.method == 'POST':
form = UserRegistrationForm(self.request.POST or None)
context['form'] = form
if form.is_valid():
username = form.cleaned_data['username']
password = form.cleaned_data['password']
user = User.objects.create_user(username=username, password=password)
user.save()
return redirect('/')
else:
print(form.errors) #doesn't print anything
print(form.non_field_errors()) #doesn't print anything
print('Errors') #doesn't print anything
else:
form = UserRegistrationForm()
context['form'] = form
return context
def get_queryset(self):
pass
视图.py
class UserRegistrationForm(forms.ModelForm):
password = forms.CharField(widget=forms.PasswordInput)
class Meta:
model = User
fields = [
'username',
'password',
]
class BoxesView(ListView):
template_name = 'polls.html'
def get_context_data(self):
context = super(BoxesView, self).get_context_data()
# login
if self.request.method == 'POST':
form = UserRegistrationForm(self.request.POST or None)
context['form'] = form
if form.is_valid():
username = form.cleaned_data['username']
password = form.cleaned_data['password']
user = User.objects.create_user(username=username, password=password)
user.save()
return redirect('/')
else:
print(form.errors) #doesn't print anything
print(form.non_field_errors()) #doesn't print anything
print('Errors') #doesn't print anything
else:
form = UserRegistrationForm()
context['form'] = form
return context
def get_queryset(self):
pass
base.html
<form action="" enctype="multipart/form-data" method="post">{% csrf_token %}
<div class="registerBox">
{{ form.username }}
{{ form.password }}
<input type="submit" value="register"/>
</div>
</form>
好的,我看到问题解决了缩进,if语句应该在get\u context\u data函数内部,而不是外部;) 好的,我看到问题解决了缩进,if语句应该在get\u context\u data函数内部,而不是外部;) 您需要向您的CBV添加
post()
方法和FormMixin
,如下所示:
class BoxesView(FormMixin, ListView):
template_name = 'polls.html'
form_class = UserRegistrationForm
# ...
def post(self, request, *args, **kwargs):
form = self.get_form()
if form.is_valid():
# ...
else:
# ...
return render(request, self.template_name, {'data': some_data})
您需要向您的CBV添加post()
方法和FormMixin
,如下所示:
class BoxesView(FormMixin, ListView):
template_name = 'polls.html'
form_class = UserRegistrationForm
# ...
def post(self, request, *args, **kwargs):
form = self.get_form()
if form.is_valid():
# ...
else:
# ...
return render(request, self.template_name, {'data': some_data})
刚刚修复了压痕,但仍然不起作用。相同错误:不允许使用方法(POST):“POST/HTTP/1.1”405 0不要使用get_context_data使用POST方法,请查看此链接您还缺少操作“”?您需要指定要发布到的URL。查看一下你的URL.py,你为视图添加的URL必须是操作中使用的URL。我使用了post()方法,它删除了错误,但没有创建新用户。我在编辑中发布了我的代码。还有,为什么我需要
操作
值?我看过很多没有它的教程。在表单的正下方添加一个print语句。is_valid()并检查if语句中是否有,如果没有,则是表单的问题。只是修复了缩进,但仍然不起作用。相同错误:不允许使用方法(POST):“POST/HTTP/1.1”405 0不要使用get_context_data使用POST方法,请查看此链接您还缺少操作“”?您需要指定要发布到的URL。查看一下你的URL.py,你为视图添加的URL必须是操作中使用的URL。我使用了post()方法,它删除了错误,但没有创建新用户。我在编辑中发布了我的代码。还有,为什么我需要操作
值?我看过很多没有它的教程。在表单的正下方添加一个print语句。is\u valid()并检查if语句中是否有,如果没有,则说明表单有问题。user=user.objects.create\u user(username=username,password=password)
了解if。但我认为这不是问题所在。你确定你的url很好吗?只是修正了缩进。好吧,问题是这是我的主页-所以没有单独的URL注册。因此,注册是通过主页上的javascript(onclick)访问的。你知道这是否会影响它吗?user=user.objects.create\u user(username=username,password=password)
如果需要,请进入。但我认为这不是问题所在。你确定你的url很好吗?只是修正了缩进。好吧,问题是这是我的主页-所以没有单独的URL注册。因此,注册是通过主页上的javascript(onclick)访问的。知道这会不会影响它吗?我也试过了。我没有收到任何错误,但它没有创建新用户。您确定表单数据有效吗?因为“它没有创建新用户”可能是由其他原因引起的form.is\u valid()
返回False,因此是的,数据可能无效,但我不确定原因。我在编辑中发布了代码。尝试使用FormMixin
和form_class
属性。尝试后获得了视图app.views.BoxesView未返回HttpResponse对象。它返回的是无。错误。你能看看我的编辑吗?我已经试过了。我没有收到任何错误,但它没有创建新用户。您确定表单数据有效吗?因为“它没有创建新用户”可能是由其他原因引起的form.is\u valid()
返回False,因此是的,数据可能无效,但我不确定原因。我在编辑中发布了代码。尝试使用FormMixin
和form_class
属性。尝试后获得了视图app.views.BoxesView未返回HttpResponse对象。它返回的是无。错误。你能看看我的编辑代码吗?