私はジャンゴが初めてです。ここでは、djangoアプリのログインを作成したいです。ユーザーアカウントを作成しようとすると、次のエラーが表示されます
FieldError at /signup/ Cannot resolve keyword 'mobile' into field
Choices are: date_joined, email, first_name, groups, id, is_active, is_staff, is_superuser, last_login, last_name, logentry, password, user_permissions, username, userregform
ユーザーアカウントの作成中に、ユーザー名、電子メール、モバイル番号、パスワード、および組織名を追加します。電子メールまたはモバイルが既に存在しない場合、エラーメッセージが表示されます。
そして、ここに私のコードがあります
forms.py
User=get_user_model()
class UserLoginForm(forms.Form):
email=forms.EmailField(label='Email address')
password = forms.CharField(label='Password',
widget=forms.PasswordInput())
def clean(self,*args,**kwargs):
email=self.cleaned_data.get("email")
password=self.cleaned_data.get("password")
if email and password:
user=authenticate(email=email,password=password)
if not user:
raise forms.ValidationError("This email id is not registered")
if not user.check_password(password):
raise forms.ValidationError("Incorrect password")
return super(UserLoginForm,self).clean(*args,**kwargs)
class RegistrationForm(forms.ModelForm):
username= forms.CharField(label='Username')
email = forms.EmailField(label='Email address')
mobile =forms.CharField(label='Mobile No')
password = forms.CharField(label='Password')
org_name = forms.CharField(label='Organisation Name')
class Meta:
model = User
fields = ['username', 'email', 'mobile', 'password','org_name']
def clean_email(self):
email = self.cleaned_data.get('email')
check_duplicate_email = User.objects.filter (email=email).exists()
if check_duplicate_email:
raise forms.ValidationError(
"This email id is already registered"
)
return email
def clean_mobile(self):
mobile=self.cleaned_data.get('mobile')
check_duplicate_mobile=User.objects.filter(mobile=mobile).exists()
if check_duplicate_mobile:
raise forms.ValidationError(
"This mobile no is already registered"
)
return mobile
models.py
class UserRegForm(models.Model):
email=models.OneToOneField(User,unique=True)
mobile =models.CharField(max_length=10)
org_name = models.CharField(max_length=254)
views.py
def login(request):
title="Login"
form=UserLoginForm(request.POST or None)
if form.is_valid():
email=form.cleaned_data.get("email")
password = form.cleaned_data.get("password")
user=authenticate(email=email,password=password)
login(request,user)
return render(request,"userRegistration/login.html",{"form":form,"title":title})
def signup(request):
title="Signup"
if request.method=="POST":
form = RegistrationForm(request.POST)
print form.is_valid() #print False
if form.is_valid():
user=form.save(commit=False)
email = form.cleaned_data.get("email")
password = form.cleaned_data.get("password")
user=set_password(password)
user.save()
new_user = authenticate(email=user.email, password=password)
login(request, new_user)
return redirect("userRegistration/a.html")
else:
form=RegistrationForm()
return render(request, "userRegistration/signup.html", {"form":form,"title":title})
html
{% block title %}Registration{% endblock %}
{% block content %}
<h1>Registration</h1>
{% if form.errors %}
<h1>Error</h1>
{% endif %}
<form method="post" action="{% url 'userRegistration:signup' %}"">{% csrf_token %}
{{ form }}
<input type="submit" name="submit" />
</form>
{% endif %}
{% endblock %}</html>
回答 1 件
関連記事
- Django:ユーザーは画像をアップロードできますが、画像が表示されません:HTMLの問題? (初心者ヘルプ)
- Djangoフォームが検証エラーを返さないはずなのに?
- Django:OneToOne自己参照フィールドフォーム検証エラー(このフィールドを持つモデルはすでに存在します)
- PHP問い合わせフォームの検証/ URLの問題
- DropletsとDjangoのURLの問題
- Django入力検証to_pythonメソッド
- Djangoクラスプロパティの検証をトリガーして例外を発生させる方法
- jQueryフォーム:検証問題の送信時+送信後も同じページにとどまる
- Django REST Framework Serializer検証エラー
関連した質問
- Djangoフォームのドロップダウンのラベルを変更するにはどうすればよいですか?
- Django Adminに、カスタムHTMLを使用せずに、保存時にモデルフィールドにクエリセットを提供するカスタムオートコンプリートフィールドを追加する方法はありますか?
- DjangoAdminで多対多モデルのすべてのフィールドを表示するにはどうすればよいですか?
- これらの反復的なdjangoクラスベースのビューとURLパターンを作成するためのより乾燥した方法はありますか?
- sqliteに画像を保存する:Django
- アプリの29の未適用の移行を解決するにはどうすればよいですか:admin、api、auth、authtoken、contenttypes、sessions、social_django
- 外部キーを介して接続された別のモデルのフィールドを使用してDjangoフィルターデータ
- Djangoモデルフォームベースのシステムをサインアップ用の生のHTMLベースのフォームシステムに変換します
- Djangoで1対1のテーブルフィールド値にアクセスする
- DetailViewを介してURLパスを作成しようとしていますが、HTMLページで重複する値を取得しています
あなたの
RegistrationForm
User
を使用する モデル。どこにあるのか分かりません。 (たぶんdjangoデフォルトUser
モデル? )しかし、他のモデルのフィールドは使用できません。 (この状況では、UserRegForm
)。サインアップ中にフィールドを追加する場合は、サインアップ後に追加する必要があります。
clean_mobile
を削除するだけです フォームからsignup
に追加します 見る。以下のように(これは単なる例です。独自の方法でカスタマイズする必要があります