홈페이지에서 등록을 할 수 있으므로 등록을 처리 할 별도의 URL이 없습니다. get_context_data
을 통해 양식을 보내려고하지만 작동하지 않습니다. 여기에 내 코드입니다 :오류 : 메서드가 허용되지 않음 (POST) : "POST/HTTP/1.1"405 0
<form action="" enctype="multipart/form-data" method="post">{% csrf_token %}
<div class="registerBox">
{{ form.username }}
{{ form.password }}
<input type="submit" value="register"/>
</div>
</form>
그래서
base.html
class UserRegistrationForm(forms.ModelForm):
password = forms.CharField(widget=forms.PasswordInput)
class Meta:
model = User
fields = [
'username',
'password',
]
views.py
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
forms.py 때 양식을 제출하면 오류가 발생합니다. Method Not Allowed (POST): "POST/HTTP/1.1" 405 0
그리고 새 사용자를 만들지 않습니다. 문제가 뭔지 아십니까?
편집 :이 오류를 가지고, FormMixin 시도 : The view app.views.BoxesView didn't return an HttpResponse object. It returned None instead.
class BoxesView(ListView):
template_name = 'polls.html'
form_class = UserRegistrationForm
def post(self, request, *args, **kwargs):
form = self.get_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('/')
def get_context_data(self):
context = super(BoxesView, self).get_context_data()
context['form'] = self.get_form()
return context
def get_queryset(self):
pass
'사용자 = User.objects.create_user (사용자 이름 = 사용자 이름, 암호 = 암호를)'안쪽에 가져 가라. 부는 내가 생각하는 문제가 아니다. 당신의 URL은 괜찮습니까? – metmirr
고정 된 들여 쓰기. 음, 이것이 내 홈페이지입니다. 그래서 별도의 등록 URL이 없습니다. 등록은 홈페이지에서 자바 스크립트 (onclick)를 통해 이루어집니다. 이것이 영향을 미치는가? – Zorgan