【问题标题】:Django Attach variables from one step to anotherDjango将变量从一个步骤附加到另一个步骤
【发布时间】:2022-01-04 22:32:18
【问题描述】:

如何获取第二个表单并将其添加到第一个表单,然后选择性地不允许该用户登录。在 Doctorwizard done 函数中。

也许添加一个变量状态?

等等

username,password,email,first_name,last_name,verified

views.py

from django.core.files.storage import FileSystemStorage
import os
from django.conf import settings
class DoctorWizard(SessionWizardView):
    file_storage = FileSystemStorage(location=os.path.join(settings.MEDIA_ROOT, 'doctor'))
    template_name = "registration/signup.html"
    form_list = [SignUpForm,verify]
    
    def done(self, form_list, **kwargs):
        data=process_data(form_list)
        return redirect('home')

forms.py

class SignUpForm(UserCreationForm):
    first_name = forms.CharField(max_length=30, required=False, help_text='Optional.')
    last_name = forms.CharField(max_length=30, required=False, help_text='Optional.')
    email = forms.EmailField(max_length=254, help_text='Required. Inform a valid email address.')

    class Meta:
        model = Profile
        fields = ('username', 'first_name', 'last_name', 'email', 'password1', 'password2', )

class verify(forms.Form):
    verified = forms.ImageField(required=True)
    class Meta:
        model = Profile
        fields = ('verified',)

models.py

class Profile(AbstractUser):
    
    bio = models.TextField(max_length=100, blank=True)
    phone_number = PhoneNumberField(max_length=25, region="US")
    birth_date = models.DateField(blank = True, null = True) 
    is_doctor = models.BooleanField(default=False)
    verified = models.ImageField(upload_to='media/doctor')
    date_created = models.DateTimeField(auto_now_add=True)
    avatar = models.ImageField(default='default.png', upload_to='')

【问题讨论】:

    标签: django django-formwizard


    【解决方案1】:
    def done(self, form_list, **kwargs):
            process_data(form_list)
            userCreate = form_list[0]
            userCreate.save()
            username = userCreate.cleaned_data.get('username')
            raw_password = userCreate.cleaned_data.get('password1')
            user = authenticate(username=username, password=raw_password)
            if user:
                user.verified=form_list[1].cleaned_data.get('verified')
                user.is_doctor=True
                user.is_active=False
                user.save()
    

    只需抓住用户并访问它的字段。

    【讨论】:

      猜你喜欢
      • 2022-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-31
      • 1970-01-01
      相关资源
      最近更新 更多