Django говорит, что имя 'форма' не определено, но импорт существует - PullRequest
0 голосов
/ 14 февраля 2020

У меня есть пользовательская форма и форма профиля, как показано ниже:

from django import forms
from django.contrib.auth.models import User
from django.contrib.auth.forms import UserCreationForm
from django_countries.fields import CountryField
from .models import Profile

class RegisterUserForm(UserCreationForm):
    email = forms.EmailField()
    first_name = forms.CharField(max_length=30)
    last_name = forms.CharField(max_length=100)

    class Meta:
        model = User 
        fields = ['username','first_name','last_name','email','password1','password2']

class RegisterProfileForm(UserCreationForm):
    address = forms.CharField(max_length=120)
    postcode = forms.CharField(max_length=30)
    countrycode = forms.CharField(max_length=3)

    class Meta:
        model = User 
        fields = ['address','postcode','countrycode']

Они импортируются в views.py в приведенном ниже коде, и если они действительны ...

from django.shortcuts import render,redirect
from django.contrib import messages
from .forms import RegisterUserForm,RegisterProfileForm,UserUpdateForm,ProfileUpdateForm
from django.contrib.auth.decorators import login_required

def register(request):
    if request.method == "POST":
        u_form = RegisterUserForm(request.POST)
        p_form = RegisterProfileForm(request.POST)

        if u_form.is_valid and p_form.is_valid:
            from django import forms
            username = form.cleaned_data.get('username')
            first_name = form.cleaned_data.get('first_name')

Тем не менее, когда я публикую форму, я получаю «Ошибка имени в регистре ... имя« форма »не определена», и нарушается строка кода: username = form.cleaned_data.get ('username'), другими словами как как только я ссылаюсь на form.cleaned_data, django objects.

Раньше это работало. В отчаянии я импортировал django .forms непосредственно перед обращением к forms.cleaned_data (его там не было раньше), но неудивительно, что я все еще получаю «Ошибка имени в регистре ... имя« форма »не определена».

Может кто-нибудь сказать мне, что я могу делать неправильно, или указать, что нужно проверить?

1 Ответ

0 голосов
/ 14 февраля 2020

Ваша реализация формы cleaned_data неверна. Попробуйте вот так (см. Комментарии к коду для объяснения):

def register(request):
    if request.method == "POST":
        u_form = RegisterUserForm(request.POST)
        p_form = RegisterProfileForm(request.POST)

        if u_form<b>.is_valid()</b> and p_form<b>.is_valid()</b>:  <b># is_valid is a method, not property</b>
            username = <b>u_form</b>.cleaned_data.get('username')  <b># get cleaned data form a form instance, like 'u_form' or 'p_form'</b>
            first_name = <b>u_form</b>.cleaned_data.get('first_name')

Дополнительную информацию можно найти в is_valid() документации и cleaned_data документация .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...