Django Errors(課題で遭遇したエラー)
エラー😨//westeargramの難題を解決する際に遭遇したエラーのブログ.
1. Method Not Allowed
特定のビューで特定のHTTPメソッドを呼び出すことが許可されていないか、無効なURLを呼び出していることを示します.URLを修正し、最初の値が空の場合、POST出力検証エラーの場合、エラーを返します.
2. TypeError : expected string or bytes-like object
抽出するリストが文字列タイプでない場合は、エラーが返されます.
正規表現で一致すると、タイプエラー(Type-Error:Expected String or bytes-like object)が発生します.エラーが発生したコードは次のとおりです.
users/validators.py
SignUpViewはまた、
だからブログの要求に従って
このため、次のコードで重複する機能を使用しないようにすることで、エラーが解決されます.
django.db.utils.DataError:Data long for column"phone number"エラー...
max lengthは、最大長(文字数)byteとして定義されます.(UTF-8のハングルは3バイト)max lengthで指定したバイトを超えたことによるエラー.したがって、より大きなmax lengthを指定します.
携帯電話番号を増やしたmax lengthは、直接Viewに移動してPOSTを行い、
モデルを変更した場合はmakemigrations&migrateを忘れないでください.
400エラー
私のエラーは、自分で作成した正規表現に無効な値を入力したことによるエラーです.有効な正規表現value...!
1. Method Not Allowed
特定のビューで特定のHTTPメソッドを呼び出すことが許可されていないか、無効なURLを呼び出していることを示します.URLを修正し、最初の値が空の場合、POST出力検証エラーの場合、エラーを返します.
2. TypeError : expected string or bytes-like object
抽出するリストが文字列タイプでない場合は、エラーが返されます.
正規表現で一致すると、タイプエラー(Type-Error:Expected String or bytes-like object)が発生します.エラーが発生したコードは次のとおりです.
users/validators.py
import re
# 이메일 validate
def validate_email(email):
email_regex = r'^[a-zA-Z0-9+-_.]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$'
return re.match(email_regex, email)
# 비밀번호 validate
def validate_password(password):
password_regex = r'^(?=.*[A-Za-z])(?=.*\d)(?=.*[$@$!%*#?&])[A-Za-z\d$@$!%*#?&]{8,}$'
return re.match(password_regex, password)
users/views.pyimport re
import json
from django.http import JsonResponse
from django.views import View
from users.models import User
# validator.py에서 function 가져오기
from users.validators import validate_email, validate_password
class SignUpView(View):
def post(self, request):
try:
data = json.loads(request.body)
email = data['email']
password = data['password']
phone_number = data['phone_number']
if not re.match(PASSWORD_VALIDATION, email):
return JsonResponse({'Message' : 'Invalid Email'}, status = 400)
if not re.match(PASSWORD_VALIDATION, password):
return JsonResponse({'Message' : 'Invalid Password'}, status = 400)
if User.objects.filter(email = email).exists():
return JsonResponse({'Message' : 'Email Already Exist '}, status = 400)
確認済み.pyは、指定された電子メールをemail regexに一致させ、ユーザー/viewsに返信します.pySignUpViewはまた、
if not re.match(PASSWORD_VALIDATION, email):
を使用して再検証を試みた.だからブログの要求に従って
if not re.match(PASSWORD_VALIDATION, str(email)):
をしましたが、間違いは消えませんでした...このため、次のコードで重複する機能を使用しないようにすることで、エラーが解決されます.
class SignUpView(View):
def post(self, request):
try:
data = json.loads(request.body)
email = data['email']
password = data['password']
phone_number = data['phone_number']
# 'if not re.match(PASSWORD_VALIDATION, password):'은 중복된 기능을 사용하며 에러 유발
if not validate_email(email):
return JsonResponse({'Message' : 'Invalid Email'}, status = 400)
if not validate_password(password):
return JsonResponse({'Message' : 'Invalid Password'}, status = 400)
if User.objects.filter(email = email).exists():
return JsonResponse({'Message' : 'Email Already Exist '}, status = 400)
3. django.db.utils.DataErrordjango.db.utils.DataError:Data long for column"phone number"エラー...
from django.db import models
class User(models.Model):
first_name = models.CharField(max_length=50)
last_name = models.CharField(max_length=50, null=True)
email = models.EmailField(max_length=50, unique=True)
password = models.CharField(max_length=100)
phone_number = models.CharField(max_length=15)
.
.
.
携帯電話番号は一般的に010-0000-0000
の形式で、総長さは数字11桁+ハイフン2桁の計13桁なので、max_length=15
にpropertyを指定するとエラーになります.max lengthは、最大長(文字数)byteとして定義されます.(UTF-8のハングルは3バイト)max lengthで指定したバイトを超えたことによるエラー.したがって、より大きなmax lengthを指定します.
from django.db import models
class User(models.Model):
first_name = models.CharField(max_length=50)
last_name = models.CharField(max_length=50, null=True)
email = models.EmailField(max_length=50, unique=True)
password = models.CharField(max_length=100)
phone_number = models.CharField(max_length=20)
.
.
Django - django.db.utils.ProgrammingError:携帯電話番号を増やしたmax lengthは、直接Viewに移動してPOSTを行い、
Django - django.db.utils.ProgrammingError: relation "폴더" does not exist
というエラーが発生した.migrateはありませんので、migrateを実行してください.モデルを変更した場合はmakemigrations&migrateを忘れないでください.
400エラー
Bad Request: /users/signup
"POST /users/signup HTTP/1.1" 400 28
の間違いだと言いましたが...私のエラーは、自分で作成した正規表現に無効な値を入力したことによるエラーです.有効な正規表現value...!
Reference
この問題について(Django Errors(課題で遭遇したエラー)), 我々は、より多くの情報をここで見つけました https://velog.io/@tritny6516/Django-Errors과제하다가-만난-에러들テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol