21.3.4
Westagram with Django 2日目
今日のお仕事:Mission 2~3
Mission 1:会員登録サイト
1.ユーザー表の作成
(コード)
from django.db import models
class User(models.Model):
email = models.EmailField(max_length=50)
password = models.CharField(max_length=100)
class Meta:
db_table = "users"
2. views.pyの作成
(コード)
import json
from django.views import View
from django.http import JsonResponse
from .models import User
class SignupView(View):
def post(self, request):
data = json.loads(request.body)
try:
user = User.objects.filter(email=data['email'],password=data['password'])
if User.objects.filter(email=data['email']).exists():
return JsonResponse({"message": "EMAIL_ERROR"}, status=400)
if User.objects.filter(password=data['password']).exists():
return JsonResponse({"message": "PASSOWRD_ERROR"}, status=400)
if '@' in data['email'] and '.' in data['email'] and len(data['password']) >= 8:
user = User.objects.create(
email = data['email'],
password = data['password']
)
return JsonResponse({"message": "SUCCESS"}, status=200)
except KeyError:
return JsonResponse({"message": "KEY_ERROR"}, status=400)
その他の内容は、ユーザーの電子メール、パスワードのフォーマットが正しいかどうかを確認した後、ifで記入します.
紛らわしい部分:ユーザーが登録されているユーザーに対して、ユーザーがいるかどうかを区別しますか?->電子メールとフィルタを別々に処理する場合は解決します.
時間があれば、正規表現@を使うのがベストです.分離を試みる
コード修正:キーエラーの理解が不足しているため、次のログインビューと同様に修正が類似しています.
def post(self, request):
data = json.loads(request.body)
if User.objects.filter(email=data['email']).exists():
return JsonResponse({"message": "EMAIL_ERROR"}, status=400)
if User.objects.filter(password=data['password']).exists():
return JsonResponse({"message": "PASSOWRD_ERROR"}, status=400)
if '@' in data['email'] and '.' in data['email'] and len(data['password']) >= 8:
user = User.objects.create(
email = data['email'],
password = data['password']
)
return JsonResponse({"message": "SUCCESS"}, status=200)
else:
return JsonResponse({"message": "KEY_ERROR"}, status=400)
キー溝、すなわちディック郡形のキー溝形状は全く考慮されない.3.ログインビューの作成
(コード)
class LoginView(View):
def post(self, request):
data = json.loads(request.body)
try:
user = User.objects.filter(email=data['email'],password=data['password'])
if User.objects.all().filter(email=data['email'], password=data['password']).exists() == True:
return JsonResponse({"message":"SUCCESS"}, status=200)
else:
return JsonResponse({"message":"INVALID_USER"}, status=401)
except KeyError:
return JsonResponse({"message":"KEY_ERROR"}, status=400)
コア:try/除外コードどうしてPOSTですか.単純getはユーザー情報を漏らす.getは与えられたpostで受け取ったのではありませんログインの場合、これは特殊な例外とみなされ、postリクエストとして受け入れられます.
try/例外の除外:
使用理由:一度受け取ったデータを再送信するには、まず最初の条件KEY ERRORを見ます.クエリーを一時的に単純なディック形式と見なす場合、email=~がこのようにおとなしく到来するとは思わないで、要求の到来を防ぐためにemailkdjfkjdのようなキー自体、すなわちフォーム自体を破壊し、例外処理を行うべきである.
コース:
1)try,まず構造をつかむ
2)userという変数->objectsを設定して、Userに格納されている値を取得します.フィルタの使用フィルタから電子メールとパスワードを取得し、条件を満たす
3)条件文:情報全体がフィルタ値に一致している場合は、パスワードエラーなどの成功/不一致の値を返します.
4)最後のKeyError:実際の鍵に対してエラーが発生した.ここで、車に戻るのは彼に対する返事だと思います.
4.その他のURL。pyの指定
(項目)
from django.urls import path, include
urlpatterns = [
path('account/', include('account.urls'))
]
(アプリケーション)from django.urls import path
from .views import *
urlpatterns = [
path('user', UserView.as_view()),
path('login', LoginView.as_view()),
]
(urls.w002) your url pattern '/user' has a route beginning with a '/'. remove this slash as it is unnecessary. if this pattern is targeted in an include(), ensure the include() pattern has a trailing '/'. エラー/上の「」を使用します.
5.もっと勉強するところ
コメントブログ
/エラー
以上のコード先輩のブログの内容を参考に
Reference
この問題について(21.3.4), 我々は、より多くの情報をここで見つけました https://velog.io/@sinichy7/21.3.4위스타2テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol