Я пытаюсь сделать django
просмотров для работы с двумя формами. Этот вид зрения используется для «Signup» и «войти в систему» находятся в одном шаблоне (например, modal
структуры, например http://bootsnipp.com/snippets/featured/login-amp-signup-forms-in-panel)Django общий вид для работы с двумя формами происходят ошибки
И я получил представление о том, имеем дело с двумя формами здесь (https://chriskief.com/2012/12/30/django-class-based-views-with-multiple-forms/)
у меня есть один model
для пользователя:
from django.contrib.auth.models import AbstractUser
from django.db import models
GENDER_CHOICES = (
('M', '남'),
('F', '여'),
)
class ChachaUser(AbstractUser):
birth = models.DateField()
gender = models.CharField(max_length=1, choices=GENDER_CHOICES)
REQUIRED_FIELDS = ['email', 'birth', 'gender', ]
И form
:
from django import forms
from django.contrib.auth.forms import UserCreationForm
from django.contrib.auth import get_user_model
GENDER_CHOICES = (
('M', '남'),
('F', '여'),
)
class MyUserCreationForm(UserCreationForm):
birth = forms.DateField(
widget=forms.SelectDateWidget(
years=range(1970, 2015)
),
required=True,
)
gender = forms.ChoiceField(choices=GENDER_CHOICES, initial='M')
class Meta(UserCreationForm.Meta):
model = get_user_model()
fields = UserCreationForm.Meta.fields + ('birth', 'gender')
я начинаю реализовывать view
для GET
запроса с этим model
и form
:
from django.contrib.auth.forms import AuthenticationForm
from django.views.generic import UpdateView
from django.shortcuts import get_object_or_404
from django.core.urlresolvers import reverse_lazy
from users.forms import MyUserCreationForm
from users.models import ChachaUser
class LoginSignupView(UpdateView):
template_name = 'users/login.html'
form_class = AuthenticationForm
second_form_class = MyUserCreationForm
success_url = '/'
def get_context_data(self, **kwargs):
context = super(LoginSignupView, self).get_context_data(**kwargs)
if 'form' not in context:
context['form'] = self.form_class()
if 'form2' not in context:
context['form2'] = self.second_form_class()
return context
def get_object(self):
return get_object_or_404(ChachaUser, pk=1)
И, наконец, я создаю user/login.html
и набор URL. Но это происходит ошибка, когда я к нему доступ:
Traceback (most recent call last):
File "/Users/Chois/.pyenv/versions/chacha_dabang/lib/python3.5/site-packages/django/core/handlers/base.py", line 149, in get_response
response = self.process_exception_by_middleware(e, request)
File "/Users/Chois/.pyenv/versions/chacha_dabang/lib/python3.5/site-packages/django/core/handlers/base.py", line 147, in get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/Users/Chois/.pyenv/versions/chacha_dabang/lib/python3.5/site-packages/django/views/generic/base.py", line 68, in view
return self.dispatch(request, *args, **kwargs)
File "/Users/Chois/.pyenv/versions/chacha_dabang/lib/python3.5/site-packages/django/views/generic/base.py", line 88, in dispatch
return handler(request, *args, **kwargs)
File "/Users/Chois/.pyenv/versions/chacha_dabang/lib/python3.5/site-packages/django/views/generic/edit.py", line 275, in get
return super(BaseUpdateView, self).get(request, *args, **kwargs)
File "/Users/Chois/.pyenv/versions/chacha_dabang/lib/python3.5/site-packages/django/views/generic/edit.py", line 213, in get
return self.render_to_response(self.get_context_data())
File "/Users/Chois/Workspace/django/chacha_dabang/chacha_dabang/users/views/login_signup.py", line 18, in get_context_data
context = super(LoginSignupView, self).get_context_data(**kwargs)
File "/Users/Chois/.pyenv/versions/chacha_dabang/lib/python3.5/site-packages/django/views/generic/edit.py", line 122, in get_context_data
kwargs['form'] = self.get_form()
File "/Users/Chois/.pyenv/versions/chacha_dabang/lib/python3.5/site-packages/django/views/generic/edit.py", line 74, in get_form
return form_class(**self.get_form_kwargs())
File "/Users/Chois/.pyenv/versions/chacha_dabang/lib/python3.5/site-packages/django/contrib/auth/forms.py", line 147, in __init__
super(AuthenticationForm, self).__init__(*args, **kwargs)
TypeError: __init__() got an unexpected keyword argument 'instance'
Я использую embed()
для отладки и понял, что get_object()
происходит ошибка. Но я не поймал причину ошибки.
Нужна помощь.
Кстати, почему я должен унаследовать UpdateView? .. Я не понимаю. – user3595632