Django-forms 구성 요소

12985 단어

forms 구성 요소는 무엇에 쓰입니까?


1. 데이터를 검증한다.
2. 페이지에 오류 정보가 표시됩니다.
3. 페이지를 렌더링합니다.
4. 데이터를 재설정합니다.
views.py 중:
from django import forms

class BookForm(forms.Form):

    title = forms.CharField(max_length=32)
    price = forms.IntegerField()
    email = forms.EmailField()

그 중에서 title,price,email은 검사에 사용되는 필드입니다.Django Console에서 검증할 수 있습니다.
 
Django Console:
# , 
from
app01.views import BookForm
fm
=BookForm({"title":"yuan","price":123,"email":"123"})
fm.is_valid() # True, False False
fm.cleaned_data # ( ) {
'title': 'yuan', 'price': 123}
fm.errors # ( ) {
'email': ['Enter a valid email address.']} fm=BookForm({"title":"yuan","price":123,"email":"[email protected]"}) fm.is_valid() True fm.cleaned_data {'title': 'yuan', 'price': 123, 'email': '[email protected]'} fm.errors {}
fm
=BookForm({"title":"yuan","price":123,"email":"[email protected]","abc":123}) # , , fm.is_valid() True fm.cleaned_data {'title': 'yuan', 'price': 123, 'email': '[email protected]'} fm.errors {} fm=BookForm({"title":"yuanhfdurhgdjfhdfruhfugfhrfherjhfeuhuerhtu","price":123,"email":"[email protected]","abc":123}) fm.is_valid() False fm.cleaned_data {'price': 123, 'email': '[email protected]'} fm.errors {'title': ['Ensure this value has at most 32 characters (it has 42).']}

 

로그인 예:


  1.사용자 이름 길이는 5자리보다 낮으면 안 됩니다.
  2.암호는 순수한 숫자여야 한다.
  3.메일박스는 반드시 메일박스 형식에 부합해야 한다.
  4.입력 데이터 형식에 문제가 있으면 사용자에게 표시합니다.
 
먼저 데이터베이스에 표를 만듭니다.
models.py:
class UserInfo(models.Model):
    user=models.CharField(max_length=32)
    pwd=models.CharField(max_length=32)
    email=models.CharField(max_length=32)

 
보내다http://127.0.0.1:8000/reg/요청:
urls.py:
from app01 import views
urlpatterns = [
    path('admin/', admin.site.urls),
    path('reg/', views.reg),
]

views.py:
from django import forms
from app01.models import UserInfo

class UserForm(forms.Form):
    msg={"required":" "}
    user=forms.CharField(min_length=5, error_messages=msg)
    pwd=forms.IntegerField(error_messages=msg)
    email=forms.EmailField(error_messages=msg)

def reg(request):

    if request.method=="POST":
        print(request.POST)

        #  
        form=UserForm(request.POST)
        if form.is_valid():
            print(form.cleaned_data)
            UserInfo.objects.create(**form.cleaned_data)
            return HttpResponse("ok")
        else:
            # print(form.cleaned_data)
            # print(form.errors)  # {"user":["",""]}
            # print(form.errors.get("user"))
            # print(form.errors.get("user")[0])

            errors=form.errors
            return render(request, "reg.html", {"errors":errors})
    else:
        return render(request, "reg.html")

reg.html:

"en">

    "UTF-8">
    Title




""method="post">
{% csrf_token %}
사용자 이름 "text"name = "user"> class = "error"> {errors.user.0}}
암호'text'name='pwd'>class='error'>{{errors.pwd.0}}
메일박스 "text"name = "email"> class = "error"> {errors.email.0}}
"submit">

좋은 웹페이지 즐겨찾기